我有以下MySQL(版本5.1)表(InnoDB):
Username varchar(50)
Sequence int(11)
FileType varchar(10)
Photo longblob -- here
PhotoSize int(11)
Timestamp datetime
尝试插入字节[] 96.7KB失败,错误:
第1行的列'照片'的数据太长
插入byte[]
(大小37.2KB)工作正常。我不知道引爆点是什么。
我用Google搜索了一下,许多人说解决方法是将它从BLOB更改为LONGBLOB。这没用。其他人说将Max_Allowed_Packet更改为16M(在my.ini文件中)可以解决问题。这也行不通。
任何人都可以帮助我吗?
答案 0 :(得分:3)
即使他们“可以”,也不会使数据库存储二进制文件。在表中包含服务器上文件的路径会更有效。
答案 1 :(得分:2)
LONGBLOB
BLOB列,最大长度为4,294,967,295或4GB(232 - 1)字节。 LONGBLOB列的有效最大长度取决于客户端/服务器协议中配置的最大数据包大小和可用内存。每个LONGBLOB值使用四字节长度前缀存储,该前缀指示值中的字节数。
您确定已编辑了正确的my.ini文件吗?您是否签入了加载的配置值?如果您使用的是phpMyAdmin,请转到“Variables”选项卡并选中“max allowed packet”值,默认值为16,777,216,您应该更像1,000,000,000