原创

如何配置 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

正文到此结束
热门推荐
本文目录