插入大数据,超过“max_allowed_pa​​cket”我可以以某种方式躲闪它吗?

时间:2015-06-16 09:18:40

标签: mysql

我将blob数据插入MySQL表,但现在大小超过“max_allowed_pa​​cket”设置。它的服务器的限制,我不能增加。我可以以某种方式插入更大的数据吗?我已经gz_compress-ed数据

1 个答案:

答案 0 :(得分:1)

如果你绝对无法改变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非常大,您也可能需要考虑以不同方式存储它们 - 即分割成行或存储在某个文件中。