2013-05-14 97 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)