我不断收到此错误:
插入失败:[1062] 重复条目 'Upping Your Type Game- http://jessicahische.is/talkingtype ' 键'PRIMARY'。
问题是,没有重复的条目。这就是为什么我在收到该错误时感到困惑。
有没有办法使用 InnoDB 进行检查?
我尝试导出表并阅读 SQL 代码并搜索任何重复项,但没有任何重复项。
这并不是说表中已经存在重复条目,而是说其中已经有一个条目具有主键的该值,因此拒绝插入第二个条目。
我怀疑你是否运行:
SELECT *
FROM <table>
WHERE <keyfield> = 'Upping Your Type Game-http://jessicahische.is/talkingtype'
Run Code Online (Sandbox Code Playgroud)
或者如果该键是复合键
SELECT *
FROM <table>
WHERE <keyfield1> = 'Upping Your Type Game'
AND <keyfield2> = 'http://jessicahische.is/talkingtype'
Run Code Online (Sandbox Code Playgroud)
您会找到一个匹配的行,并且您的代码在错误点尝试插入第二行。
处理插入重复:
如果您尝试INSERT为主键(或唯一索引)重复值,您将始终收到该错误。有几种方法可以解决它:在插入之前检查并进行更新(如果某些内容可能已更改)或不执行任何操作。
还有 mysql 特定ON DUPLICATE KEY UPDATE选项(参见/sf/ask/85323381/ ) 如果您愿意牺牲与其他 RDBMS 的兼容性。
从 9.5 版开始,Postgres 支持类似的功能,但语法略有不同(ON CONFLICT DO UPDATE/NOTHING- 请参阅https://wiki.postgresql.org/wiki/UPSERT)。
MS SQL Server、Oracle 和其他一些系统支持MERGESQL:2003 标准(参见https://en.wikipedia.org/wiki/Merge_(SQL))中定义的语句,旨在实现相同的功能和更多功能。如果跨数据库兼容性是(或将来可能是)您的目标之一,请小心使用这些选项中的任何一个。
| 归档时间: |
|
| 查看次数: |
71533 次 |
| 最近记录: |