错误
我在项目中使用 gorm-oracle
对 oracle 进行批量读取,遇到了问题 the packet received is not a data packet
,这个问题也不是持续出现,随机出现
解决方法
通过错误信息,看到 error 来自底层库 github.com/sijms/go-ora/v2
我通过查看这个库的 github issue 看到很多类似问题,根据作者的描述,这个错误不是库导致的,尝试了其中的方法
最终通过测试降低 prefetch_rows
的值,错误会减少,最后我的 prefetch_rows=10
oracle://system:oracle@127.0.0.1:1521/bsemr?client charset=ZHS16GBK&prefetch_rows=10
总结
因为我的数据中有 BLOB 类型,数据比较大,oracle 的预查询太多,导致这个错误。