Base64编码的字符串不正确地保存到MySQL

时间:2013-05-14 12:24:14

标签: php mysql string

我在这个问题上挣了好几个小时。

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

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

这是保存到MySQL blob字段的数据。 (板缺)。当我做var_dump时会出现相同的情况 http://pastebin.com/u1xNAnUb

我错过了什么?这可能是一个PHP错误吗?

3 个答案:

答案 0 :(得分:3)

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

来自documentation

      Type | Maximum length
-----------+-------------------------------------
  TINYBLOB |           255 (2 8−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

答案 1 :(得分:0)

您使用char(或varchar)判断长度(大小:64.00 KB)

http://dev.mysql.com/doc/refman/5.0/en/char.html

尝试使用text或blob

http://dev.mysql.com/doc/refman/5.0/en/blob.html

答案 2 :(得分: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)