更新行时如何修复informix错误-244

Posted

技术标签:

【中文标题】更新行时如何修复informix错误-244【英文标题】:How to fix informix error -244 while updating row 【发布时间】:2017-10-25 12:49:47 【问题描述】:

我有一个程序可以更新表中的一行。这个过程每天大约执行 200 次。那么在 5-6 次它给出异常 -244。我认为有人通过选择打开了该行,而 sp 无法更新该行。 我尝试过将隔离设置为脏读,但它没有帮助...... 任何人都知道如何解决这个问题

这里解释一下这个错误代码的含义

-244 无法进行物理顺序读取以获取下一行。

数据库服务器无法读取包含一行 桌子。查看随附的 ISAM 错误代码以获取更多信息。一种 可能存在硬件问题,或者表或索引可能已 损坏。如果查询使用脏读隔离级别,则 错误代码可能是由读取数据导致的正常行为 来自同一并发更新的临时不一致状态 数据。

除非 ISAM 错误代码或操作系统消息指向 另一个原因,运行 oncheck 实用程序(使用 IBM Informix SE 检查 或 tbcheck with IBM Informix OnLine) 来检查和修复表和 索引。

【问题讨论】:

隔离级别会影响您的查询看到的内容。无论隔离级别如何,更新总是锁定行。 【参考方案1】:

如果是简单的锁定错误,例如 113“文件已锁定”(检查 ISAM 错误),您可以尝试增加 SPL 等待获得表锁定的时间。

在更新之前“将锁定模式设置为等待 10”之类的东西可能会起作用。

【讨论】:

所以如果我在我的 sp 中定义它只会在程序执行时设置,而不是在同一会话中执行的所有其他查询,对吗? 运行该语句将更改当前会话的锁定模式,所以是的,如果您这样运行它,任何其他 SQL 都将具有该等待模式,但您始终可以将其放回任何您想要的状态完成特定更新后想要。

以上是关于更新行时如何修复informix错误-244的主要内容,如果未能解决你的问题,请参考以下文章

Informix 存储过程通用异常处理

删除阻止插入

informix 指定的表(t_all)不在数据库中?

Python - Informix - 字符到数字的转换错误 (-1213)

滚动表格视图后点击选择行时如何修复崩溃?

从php向表中插入行时如何修复我的MySQLi数据库