键 'PRIMARY' 的重复条目 [...]
Duplicate entry [...] for key 'PRIMARY'
我在 oxid eshop 4.7 中更新 table oxseo
时遇到了一个奇怪的行为。
table oxseo
具有以下架构:
+------------+---------+----------+----------+----------+----------+-------+
| OXOBJECTID | OXIDENT | OXSHOPID | OXLANGID | OXSTDURL | OXSEOURL | [...] |
+------------+---------+----------+----------+----------+----------+-------+
并且在字段上有一个主键(这也是键名):
+---------+----------+--------+
| OXIDENT | OXSHOPID | OXLANG |
+---------+----------+--------+
并且我尝试通过 linux shell:
UPDATE oxseo
SET
OXIDENT = "8e4b0ac7[...]",
OXSEOURL = "my/seo/url/"
WHERE
OXOBJECTID = "123"`
导致错误:
ERROR 1062 (23000): Duplicate entry '8e4b0ac7[...]-oxbaseshop-0' for key 'PRIMARY'`
但是,当使用 phpMyAdmin 在整个 table 中查找字符串 8e4b0ac7[...]
时,没有返回任何行。尽管如此,我还是使用
手动检查了
SELECT * FROM field1 = hash
SELECT * FROM field2 = hash
等等。
有人知道原因是什么吗?
很简单。无论该更新语句试图做什么,都会使 table 处于 PRIMARY 键中具有重复条目(2 行或更多行)的状态,如 show create table oxseo
.
的输出所示
那个主键可能在单列上,也可能是复合(多列)键。
数据库引擎禁止它,因为模式禁止它。
我在 oxid eshop 4.7 中更新 table oxseo
时遇到了一个奇怪的行为。
table oxseo
具有以下架构:
+------------+---------+----------+----------+----------+----------+-------+
| OXOBJECTID | OXIDENT | OXSHOPID | OXLANGID | OXSTDURL | OXSEOURL | [...] |
+------------+---------+----------+----------+----------+----------+-------+
并且在字段上有一个主键(这也是键名):
+---------+----------+--------+
| OXIDENT | OXSHOPID | OXLANG |
+---------+----------+--------+
并且我尝试通过 linux shell:
UPDATE oxseo
SET
OXIDENT = "8e4b0ac7[...]",
OXSEOURL = "my/seo/url/"
WHERE
OXOBJECTID = "123"`
导致错误:
ERROR 1062 (23000): Duplicate entry '8e4b0ac7[...]-oxbaseshop-0' for key 'PRIMARY'`
但是,当使用 phpMyAdmin 在整个 table 中查找字符串 8e4b0ac7[...]
时,没有返回任何行。尽管如此,我还是使用
SELECT * FROM field1 = hash
SELECT * FROM field2 = hash
等等。
有人知道原因是什么吗?
很简单。无论该更新语句试图做什么,都会使 table 处于 PRIMARY 键中具有重复条目(2 行或更多行)的状态,如 show create table oxseo
.
那个主键可能在单列上,也可能是复合(多列)键。
数据库引擎禁止它,因为模式禁止它。