使用db2,手动insert语句的时候,报如下错误:
DB2 SQL Error: SQLCODE=-803, SQLSTATE=23505, SQLERRMC=2 。
开始在网上找解决方法,以下网上的解决方法总结(事实上并没有解决我的问题):
第一种解决:
1、查了下,大概意思是违反了唯一性约束啊!
2、不过,我db2 describe table XX后发现这个表只有ID是不能为空的啊!
3、最后,直接写了条SQL在命令行执行,同样的错和代码
最后,我查了下表的索引,发现建了个组合索引,才恍然大悟。
原来,DBA昨天建了唯一性约束和索引导致的!
虽然describe出来只有ID不能为空,但是加了唯一性约束和索引后导致不能插入数据。
第二种解决:
[BUG]:ERROR [23505] [IBM][DB2/AIX64] SQL0803N INSERT 语句、UPDATE 语句或由 DELETE 语句导致的外键更新中的一个或多个值无效,因为由 "2" 标识的主键、唯一约束或者唯一索引将表 "XXX" 的索引键限制为不能具有重复值。 SQLSTATE=23505
今天在对数据库进行操作时一直报此问题,导致数据的某个表只能插入一条数据。略查了一下原来是违反了唯一约束。
23505 发生由唯一索引或唯一约束强加的约束违例。
违反了唯一约束,这时候应该看一下主键、索引等。后来发现是一个索引建成了Unique,即唯一索引,但是在插入数据的时候,这个唯一索引并没有赋值,均为空,所以报错。
[解决方法:]将唯一索引更改成普通索引即可。
我自己的解决方法:
外键问题,先在其他表添加数据,再在该表添加数据。
时间: 2024-09-29 09:17:56