gpt4 book ai didi

java - SQL blob 数据转义导致 max_allowed_pa​​cket 错误

转载 作者:行者123 更新时间:2023-11-29 22:15:57 24 4
gpt4 key购买 nike

我正在尝试将二进制数据作为 blob 存储在 MySQL 表中。我知道我的服务器配置的 max_allowed_pa​​cket 大小为 1M,因此我将数据分块为 1M 的 blob。但是我仍然看到这样的错误:

Exception: Packet for query is too large (1851203 > 1048576). You can change this value on the server by setting the max_allowed_packet' variable.

发生的情况似乎是 PreparedStatement 正在转义我的分块 blob 中的数据。

例如blob 0000 将作为 \0\0\0\0 发送。

因此,在最坏的情况下,数据大小可能会加倍,从而导致错误。

我唯一的想法是将数据分成 max_allowed_pa​​cket 大小的一半,为潜在的转义字符留出空间。

还有更好的办法吗?我应该在分块之前预先转义我的数据吗?

最佳答案

我需要做两件事:

  1. 使用 PreparedStatement#setBlob(intparameterIndex, InputStream x) 而不是 setBlob(intparameterIndex, Blob x),正如 @JoopEggen 建议尝试的那样。
  2. 并在Connection上设置属性useServerPrepStmts=true,如答案中所示 https://stackoverflow.com/a/4846674/52176 (在我的例子中不需要其他属性)。

关于java - SQL blob 数据转义导致 max_allowed_pa​​cket 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31210269/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com