0

我有与 Sybase IQ 对话的 jdbc 代码。其中一个线程正在将数据加载/更新到一个 Sybase IQ 表中,例如 t1。在第一次完成加载/更新数据后,其他线程将尝试在表 t1 上触发 SQL 查询。

Write thread:
Create table t1, load/update data into t1, commit to t1.

Read thread(s):
Read select query from t1

我正在使用 JDBC,并且收到此处提到的以下错误

Transaction 156593 attempted to access an object created by transaction 156608.
-- (db_txnInfo.cxx 690)
Sybase error code=21, SQLState=”QDA11”

我不确定每次加载后我遇到的问题在哪里。每个线程使用不同的连接读取线程只触发select查询那么问题出在哪里我该如何调试?请指导。我是 Sybase IQ 和 JDBC 的新手。提前致谢。

4

1 回答 1

1

您可能需要在第二个线程中发出提交。或者为只读线程设置自动提交。

我很好奇,错误是发生在第二个线程的第一次选择上,还是只发生第一次选择之后?

在 IQ 中,即使是一个 select 语句也可以生成一个事务(它应该处理得更好一点,因为 IQ 应该创建“快照版本”,以便在事务的整个生命周期内为事务提供对数据的对数一致的视图......顺便说一下,智商有一些 F$%@#$%ng 丑陋的疣)

于 2014-12-20T00:05:01.313 回答