db2插入数据失败

Posted 小亮yuu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了db2插入数据失败相关的知识,希望对你有一定的参考价值。

使用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,即唯一索引,但是在插入数据的时候,这个唯一索引并没有赋值,均为空,所以报错。

[解决方法:]将唯一索引更改成普通索引即可。

我自己的解决方法:

外键问题,先在其他表添加数据,再在该表添加数据。

以上是关于db2插入数据失败的主要内容,如果未能解决你的问题,请参考以下文章

将 JSON 文本插入 DB2 表

如何在 db2 中生成和插入大型数据集?

在 DB2 数据库中插入多行

db2中插入数据后直接返回主键(自增列id)的sql怎么写

如何使用 Spring JDBC Framework 将“null”时间戳插入 DB2 数据库

在 DB2 触发器中跳过当前行的任何关键字