【问题标题】:Inserting big data, more than "max_allowed_packet" can I dodge it somehow?插入大数据,超过“max_allowed_pa​​cket”我可以以某种方式躲避它吗?
【发布时间】:2015-06-16 22:21:32
【问题描述】:

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

【问题讨论】:

    标签: mysql


    【解决方案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 非常大,您可能还需要考虑以不同方式存储它们 - 即拆分行或存储在某个文件中。

    【讨论】:

    • 整洁。好的。棘手。这应该被教导!
    • .... 遗憾的是没有。事实证明它仍然无法工作,因为 max_allowed_pa​​cket 设置
    猜你喜欢
    • 2015-07-05
    • 1970-01-01
    • 2012-12-11
    • 2020-12-25
    • 2021-09-03
    • 1970-01-01
    • 1970-01-01
    • 2012-05-19
    • 1970-01-01
    相关资源
    最近更新 更多