我有与 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
我收到 here 中提到的以下错误:
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 的新手。
最佳答案
您可能需要在第二个线程中发出提交。或者对于只读线程设置自动提交。
我很好奇,错误是发生在第二个线程的第一个选择上,还是仅发生在第一个选择之后?
在 IQ 中,即使是 select 语句也可以生成事务(它确实应该处理得更好一些,因为 IQ 应该创建“快照版本”,以便为事务提供事务生命周期内数据的日志一致 View ) ...顺便说一句,智商有一些 F$%@#$%ng 丑陋的疣)
关于java - 事务 X 尝试通过 JDBC 访问事务 Y 创建的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25001655/