db2插入數據失敗


原文章: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,即唯一索引,但是在插入數據的時候,這個唯一索引並沒有賦值,均為空,所以報錯。

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

我自己的解決方法:

外鍵問題,先在其他表添加數據,再在該表添加數據。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM