2013-05-14 222 views
2

我在这个问题上挣扎了好几个小时。Base64编码的字符串不正确地保存到MySQL

我有一个很长的字符串。该值是base64_encoded json数据。 当我在做var_dump或将字符串保存到MySQL时,它会被截断。但它可以正确保存到文件。

这是保存到文件的输出。 (正确) http://pastebin.com/Brr9a271

这是保存到MySQL blob字段的数据。 (板缺)。我也一样var_dump http://pastebin.com/u1xNAnUb

我在想什么?这可能是一个PHP错误?

+0

您是否检查blob字段足够大?如果将数据存储在二进制字段中,为什么要用base64编码? – 2013-05-14 12:25:34

+0

你解决了你的问题吗? – 2013-06-12 22:39:27

回答

3

你的文件有大约86KiB ,但最大长度为65,535的BLOB列。
使用MEDIUMBLOB

documentation

 
     Type | Maximum length 
-----------+------------------------------------- 
    TINYBLOB |   255 (28−1) bytes 
     BLOB |  65,535 (216−1) bytes = 64 KiB 
MEDIUMBLOB | 16,777,215 (224−1) bytes = 16 MiB 
    LONGBLOB | 4,294,967,295 (232−1) bytes = 4 GiB 
0

用于存储base64编码数据MYSQL表的数据类型更改为LONGTEXT

看看!!!

TINYTEXT - 255 bytes 
TEXT - 65535 bytes 
MEDIUMTEXT - 16,777,215 bytes (2^24 - 1) 
LONGTEXT - 4G bytes (2^32 – 1) 

TINYBLOB - 255 bytes 
BLOB - 65535 bytes 
MEDIUMBLOB - 16,777,215 bytes (2^24 - 1) 
LONGBLOB - 4G bytes (2^32 – 1)