原文章:db2插入數據失敗
轉載請注明出處: https://www.cnblogs.com/xiaoliangyuu/p/5982736.html
使用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,即唯一索引,但是在插入數據的時候,這個唯一索引並沒有賦值,均為空,所以報錯。
[解決方法:]將唯一索引更改成普通索引即可。
我自己的解決方法:
外鍵問題,先在其他表添加數據,再在該表添加數據。