MySQL数据太长,无法在LONGBLOB上发生列

时间:2010-10-25 06:00:46

标签: c# mysql bytearray blob blobstorage

我有以下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文件中)可以解决问题。这也行不通。

任何人都可以帮助我吗?

2 个答案:

答案 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