我正在使用postgres,我在更新行时遇到重复键错误:
cursor.execute("UPDATE jiveuser SET userenabled = 0 WHERE userid = %s" % str(userId))
psycopg2.IntegrityError: duplicate key value violates unique constraint "jiveuser_pk"
我不明白如何更新行会导致此错误......我们非常感谢任何帮助。
答案 0 :(得分:3)
该错误似乎表明userenabled
列正在参与jiveuser_pk
主键。我的猜测是,userid
和userenabled
都参与了主键,并且您已经userid
userenabled
等于零。
答案 1 :(得分:1)
触发器。了解你的DBA在你不看的时候做了什么,触发了火灾并做了你不知道的各种随机事情,并且IT产生了重复的错误并导致你的交易失败。
答案 2 :(得分:0)
如果userenabled是键的一部分并且将其设置为0与具有相同值的另一个键冲突,则可能发生。
这里也可能有一个触发器,虽然不如简单的键碰撞。
我想完全回答我们需要查看该表的主键是什么。
答案 3 :(得分:0)
您需要知道要知道的主键的组件。尝试从命令行运行\d jiveuser_pk
。我猜测该表上的PK是(userid,userenabled)或者在更新后有一些触发器正在运行。