PGSQL的参数超过上限总结

异常信息:

org.postgresql.util.PSQLException: An I/O error occurred while sending to the backend.

Caused by: java.io.IOException: Tried to send an out-of-range integer as a 2-byte value: 50800

问题原因:

Pg数据库的JDBC驱动对参数数量是有上限限制的,最大值为32767

但是Pg数据库本身对参数数量库没有限制的,即在数据库客户端可以执行超过32767个参数的sql

解决方法:

第一种:

可以将集合进行分割,比如5000个分割,然后再分批插入(多个集合或者分页这种不行

第二种:

将集合参数拼装成字符串,比如'1','2','3'或者1,2,3,然后使用将in和(${ids} )组装成sql(无法防止sql注入),可以搞定。

第三种:

进行join查询(不是一个数据库,需要建dblink或者fdw,效率不高

第四种:

开发时,应该尽量避免这种查询,如果出现这种查询,应该首先考虑是不是设计有问题

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xiaowangbadan0_0

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值