您的位置:首页 > 数据库

Informix 数据库常用问题解决方案(3)

2010-02-07 12:17 417 查看

1.1SQLCODE=134

l INFORMIX解释:
-134 ISAM错误: 没有更多的锁。
ISAM处理器需要锁定一行或一个索引页但是已没有可用的锁了。一个操作所需要的锁的个数主要取决于在一个事务中改变的行的个数。你可以通过减少每个事务所修改的行数来减少一个操作所需的锁的个数,或通过锁定整个表来代替锁定行。可用的锁的个数根据你所使用的实现可能在下面三个位置之一被配置:操作系统核心;共享内存段;或是OnLine。向你的系统管理员咨询如何获得更多的锁。
l 问题分析:
需要删除或更新的数据过多导致的错误。
l 参考解决方法:
查看是否锁资源不足,请系统管理员解决。

1.2索引优化

l 问题分析:
由于集中对数据库的修改、查询比较多,对数据库的索引要求也比较高,应用会因为索引的没有及时优化而导致互锁或提取插入慢。
l 参考解决方法:
选择要优化的数据库执行
UPDATE STATISTICS HIGH 或 UPDATE STATISTICS MEDIUM

1.3SQLCODE=206

l INFORMIX解释:
-206 数据库中没有指定的表。
在数据库中找不到需要的表或者视图。
l 问题分析:
可能该数据库中没有需要的表或者该表已经改名或者已经从数据库中删除
             

1.4SQLCODE=691

l INFORMIX解释:
-691 在参照约束的参照表中遗漏主键。
违反了参照的约束条件。当试图把值插入到参照的约束条件中的某个字段或者修改其中某个字段的时候,试图插入的值不在被参照的父键里。
l 问题分析:
插入纪录时存在约束,插入时必须要先在与其有主键关系的表中插入相应的纪录。
l 参考解决方法:
查看数据库中需要插入纪录的表所存在的主键关系,先在与其有关联的表中插入相关记录,然后再插入需要插入的纪录

1.5SQLCODE=692

l INFORMIX解释:
-692 约束的键值仍然被参照。
违反了参照的约束条件。这情况通常发生在你试图删除某一行,而该行的某一列(父键)与另一行的某一列(子键)有约束关系的时候。
l 问题分析:
删除纪录的时候存在约束,删除时必须要先将与其有外键关系的表中的相应纪录删除。
l 参考解决方法:
查看数据库中需要删除纪录的表所存在的外键关系,先将与其有关联的表的相关记录删除,然后再删除需要删除的纪录。

1.6SQLCODE=847

l INFORMIX解释:
-847 正在装载的行报错。
这种情况通常出现在装载数据文件的某一行的数据时。操作将在插入该行时报错并退出。如果该操作时在某个事务中,会造成事务回滚,否则在重新开始执行此项操作前,要把已经插入的纪录从表里面删除或者把文件中已经装上的数据移走。
l 问题分析:
可能存在数据转换问题,(例如,在需要数值类型数据时出现了非数值型数据,非法格式的日期型数据或者太长的字符串)。还可能是在不为空的列里面插入了一个空值。
l 参考解决方法:
编辑装载报错的文件,找出报错的行,并检查是否有存在类似问题的行。确认文件没有问题之后,重新执行装载。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: