【发布时间】:2015-06-16 22:21:32
【问题描述】:
我正在将 blob 数据插入 MySQL 表,但现在大小超过了“max_allowed_packet”设置。它是服务器的限制,我不能增加它。我可以以某种方式插入更大的数据吗?我已经 gz_compress-ed 数据了
【问题讨论】:
标签: mysql
我正在将 blob 数据插入 MySQL 表,但现在大小超过了“max_allowed_packet”设置。它是服务器的限制,我不能增加它。我可以以某种方式插入更大的数据吗?我已经 gz_compress-ed 数据了
【问题讨论】:
标签: mysql
如果您绝对无法更改 max_allowed_packet size(尽管我建议您尝试 - 请参阅 MySQL Error 1153 - Got a packet bigger than 'max_allowed_packet' bytes)。然后您可以分批上传数据。我还没有尝试过,所以你可能想测试一下:
INSERT INTO foo (id, dat) VALUES (1, startOfBlob);
UPDATE foo SET dat = CONCAT(dat,secondBitOfBlob) WHERE id = 1;
UPDATE foo SET dat = CONCAT(dat,thirdBitOfBlob) WHERE id = 1;
这会使 blob 碎片化,因此您可能希望在此之后运行 OPTIMIZE TABLE。
如果您要存储的 blob 非常大,您可能还需要考虑以不同方式存储它们 - 即拆分行或存储在某个文件中。
【讨论】: