You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Quarkus+Testcontainers+Cucumber重置数据库时类型18049缓存查找失败

问题:pg_dump/pg_restore重置数据库后触发PostgreSQL类型OID缓存错误

执行SQL查询时出现如下错误:

org.postgresql.util.PSQLException: ERROR: cache lookup failed for type 18049

上下文

  • 技术栈:Quarkus、Hibernate ORM、集成PostGIS的Testcontainers PostgreSQL、Cucumber
  • 环境差异:
    • Testcontainers测试环境中PostGIS表位于public schema
    • 生产环境中PostGIS表位于system schema
  • 已移除数据库中自动更新几何数据的触发器及相关几何数据,但问题仍未解决

相关代码

DatabaseResource类和TestConfig类代码如下(保留原内容)

已尝试的解决方法

  • 校验PostGIS schema的环境差异
  • 为pg_restore添加--clean和--disable-triggers参数
  • 禁用Hibernate缓存、关闭SessionFactory
  • 清除JTA事务

问题更新

  • 手动将空间数据从public schema复制到system schema可解决问题,但需实现自动化流程
  • 根因定位:pg_restore操作后OID发生更新,导致Hibernate或PostgreSQL驱动的类型缓存失效
  • 临时修复:恢复数据库后通过Hibernate查询locations表刷新缓存;尝试过PostGIS更新、执行DISCARD ALL、ANALYZE等操作,均未达到理想效果

内容的提问来源于stack exchange,提问作者Самир Шахмурадлы

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 01:29:53