为了账号安全,请及时绑定邮箱和手机立即绑定

mysql PDO 更新查询错误,键 'PRIMARY' 出现 1062 重复条目 '4146'

mysql PDO 更新查询错误,键 'PRIMARY' 出现 1062 重复条目 '4146'

PHP
米琪卡哇伊 2021-07-02 14:58:49
我有一个 mysql 数据库,查询是用 PHP 构建的。该查询是一个传统的更新查询,但是当它运行时,我收到一个错误,指出 1062 Duplicate entry '4146' for key 'PRIMARY'。这似乎违反直觉,因为我正在尝试更新第 4146 行,我不确定它为什么会抱怨。我还有其他可以正常工作的 PDO 语句。我试过指定各种 PDO::PARAM,并且在谷歌上搜索了大约一个小时没有找到一个好的答案。这是基本的 sql 语句,后跟错误:UPDATE tmp_event set    event_no=:event_no,    artist_no=:artist_no,    squality_no=:squality_no,     studio_album=:studio_album,     album=:album,     concert_display=:concert_display,     collection_display=:collection_display,     interview=:interview,     complete=:complete,     tradeable=:tradeable,     event_date=:event_date,     unqualified=:unqualified,     event_day=:event_day,     event_month=:event_month,     event_year=:event_year,     comments=:comments,     venue_no=:venue_no,     media_no=:media_noPDO 异常:PDOException:SQLSTATE[23000]:违反完整性约束:1062 /media/web/www/2.4/admin/submit.php:969 中的键 'PRIMARY' 的重复条目 '4146' 堆栈跟踪:#0 /media/ web/www/2.4/admin/submit.php(969): PDOStatement->execute() #1 {main}我希望查询执行更新没有错误。感谢您的任何见解!
查看完整描述

1 回答

?
神不在的星期二

TA贡献1963条经验 获得超6个赞

您的查询没有 WHERE 子句,因此它将尝试更新表中的每一行。一旦它在第一行这样做,它就会尝试设置该event_no列并发现它有重复项。

在查询中添加 WHERE 子句,不要尝试设置 event_no

UPDATE tmp_event set artist_no=:artist_no, squality_no=:squality_no, studio_album=:studio_album, album=:album, concert_display=:concert_display, collection_display=:collection_display, interview=:interview, complete=:complete, tradeable=:tradeable, event_date=:event_date, unqualified=:unqualified, event_day=:event_day, event_month=:event_month, event_year=:event_year, comments=:comments, venue_no=:venue_no, media_no=:media_no WHERE event_no = :event_no



查看完整回答
反对 回复 2021-07-09
  • 1 回答
  • 0 关注
  • 208 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信