informix - Informix 读取错误:无法进行物理顺序读取
问题描述
简而言之问题
- 使用 dbeaver 对几个表执行数据更新
- 后来从这些表中读取开始失败
- 看起来这些表中的行/页被完成更新的会话锁定
- 似乎无法释放锁
细节
- 使用 dbeaver 连接到 informix 数据库
- 更新了表格的一行中的一列
- 在另一个表中添加了几行
- 运行选择以验证更新
- 运行了一个依赖于这些表的 .net 应用程序,当它尝试从该表中读取数据时,它开始抛出错误
在 dbeaver 中打开另一个会话,运行选择以查找我更新的行,现在我得到同样的错误
- 对于具有更新的表... SQL 错误 [IX000]:无法执行物理顺序读取以获取下一行。无法执行物理顺序读取以获取下一行。java.sql.SQLException:ISAM 错误:记录被锁定。
- 对于带有插入的表... SQL 错误 [IX000]:无法通过索引在文件中定位。无法通过索引在文件中定位。java.sql.SQLException:ISAM 错误:键值锁定
深入了解错误,了解这可能是由于表/页面/行被锁定
- 使用表 sysmaster:syslocks 拉起表上的当前锁
- 确认更新的表上有排他页锁(可能是排他行锁,不确定)
- 确认更新的表上存在排他意图表锁
确认以上两个确实是由我的 dbeaver 会话使用 sysmaster:syssessions 表发起的
尝试重新启动 dbeaver,尝试重新启动 pc,但似乎都没有释放排他锁
- 我的一点点阅读表明这些应该自动释放,但看起来不像
我怎样才能释放这些锁?任何帮助或方向表示赞赏:)
解决方案
推荐阅读
- oracle - 使用 LAG 函数为客户生成条目
- c# - 仅在 Visual Studio Code 中出现编译错误
- docker - Docker:是否可以不使用缓存从头开始构建?
- ios - 允许填充和滚动 UIStackView 中的元素
- objective-c - 使用参数从 Swift 调用 Objective-C 函数
- regex - 如何在不使用正则表达式更改引用字符串的情况下替换文本
- tensorflow - 模型尺寸太大,我的注意力模型实现?
- qt - 在 qt/qml 中具有外部“委托”的 ListView
- c++ - 修复此编译错误:标识符“and”是 C++ 中的特殊运算符名称 [-Werror=c++-compat]?
- javascript - 如何将您的输入数据与从服务接收的数据进行比较,以检查有效性(Angular)