如何配置 JOOQ 以传递十六进制字符串而不是八进制以在 PostgreSQL 中插入 bytea 列?
温馨提示:
本文最后更新于 2024年04月12日,已超过 48 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我。
我们使用JOOQ将记录插入到带有bytea列的postgresql表中。
我们发送的字节存储大约为 150Mb,我们从 Postgresql 服务器收到错误:
错误:无效的内存分配请求大小 1073741824。
在深入研究代码并生成 JOOQ 查询后,我们注意到 byteArray 被转换为八卦(org.jooq.util.postgres.PostgresUtils#toPGString(byte[]))
查询最终看起来像这样:
INSERT INTO test_table (my_data) VALUES (E'\\042\\145\\171...\\042'::bytea);
使用增加的字节存储进行测试发现,插入数据后,其大小确实是字节存储的大小,而不是八字符串(更长)的大小。
问题好像是八串字符串太长,以至于postgresql服务器在尝试将其保存到列之前无法将其转换为bytea。
没有办法配置 JOOQ 将hex
字符串作为值而不是交付octal
?
我们使用的是JOOQ版本3.16.4
和postgresql13.9
正文到此结束
- 本文标签: 家庭宠物
- 本文链接: https://www.coder6.net/article/2180
- 版权声明: 本文由蚂蚁原创发布,转载请遵循《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权
热门推荐
-
浏览(193) 评论(0)