2

我有以下 MySQL(5.1 版)表(InnoDB):

Username varchar(50)  
Sequence int(11)  
FileType varchar(10)  
Photo longblob -- here
PhotoSize int(11)  
Timestamp datetime

尝试插入 byte[] 96.7KB 失败并出现以下错误:

第 1 行的“照片”列数据过长

插入byte[](大小 37.2KB)工作正常。我不知道临界点是什么。

我用谷歌搜索,许多人说解决方案是将其从 BLOB 更改为 LONGBLOB。这没有用。其他人说将 Max_Allowed_Packet 更改为 16M(在 my.ini 文件中)可以解决问题。这也没有奏效。

谁能帮我?

4

2 回答 2

3

即使他们“可以”,数据库也不会存储二进制文件。在表中包含服务器上文件的路径会更有效。

于 2010-10-25T08:00:28.663 回答
2

长块

最大长度为 4,294,967,295 或 4GB (232 – 1) 字节的 BLOB 列。LONGBLOB 列的有效最大长度取决于客户端/服务器协议中配置的最大数据包大小和可用内存。每个 LONGBLOB 值都使用一个四字节长度前缀存储,该前缀指示值中的字节数。

您确定您编辑了正确的 my.ini 文件吗?您是否检查了加载的配置值?如果您使用 phpMyAdmin,请转到“变量”选项卡并检查“最大允许数据包”值,默认值为 16,777,216,您应该更像 1,000,000,000

于 2010-10-25T08:55:33.067 回答