我在一个相当大的 Informix 12.10 模式上运行 SchemaSpy v6.1.0-SNAPSHOT,并且收到错误“警告 - 无法 getImportedKeys 游标之前已被释放且不可用。”
我对 Java 一无所知,但我注意到 Liquibase (也是用 Java 编写的)有一个非常类似的错误,我想知道:
- 是否有人可以告诉我导致此错误的原因以及我如何避免/解决它,因为我不是特别想学习 Java :-)
- 这是 Informix 特有的还是其他数据库也有这种情况?
你的 Liquidbase 堆栈跟踪如何在 Liquibase 中使用 --logLevel实际上给了我们一个提示,但我花了一段时间才弄清楚是什么likely正在发生。在那里我们可以看到 liquibase 使用缓存的结果集。缓存结果集(游标)是危险的,因为 Informix JDBC 驱动程序不会在提交时保留游标。因此,很有可能软件打开结果集(游标)执行了一些其他操作,导致 Informix/JDBC 关闭游标,然后它尝试使用已经关闭的游标,这会导致您的错误。
有一个 API 可以强制 JDBC 保持游标打开:connection.setHoldability(ResultSet.HOLD_CURSORS_OVER_COMMIT)
但我猜你没有能力在这些产品中影响这一点来尝试它。遗憾的是,Informix 不允许在 URL 中进行此设置。应该添加一个功能:)
我针对我的一个数据库(22 个表,126 列)进行了 schemaspy 测试,最新的 Informix JDBC 驱动程序 4.10.JC12W1 没有出现任何问题。确切的问题可能需要支持团队重现才能确定。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)