我将blob数据插入MySQL表,但现在大小超过“max_allowed_packet”设置。它的服务器的限制,我不能增加。我可以以某种方式插入更大的数据吗?我已经gz_compress-ed数据
答案 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非常大,您也可能需要考虑以不同方式存储它们 - 即分割成行或存储在某个文件中。