密钥' PRIMARY'重复输入[...]

时间:2016-06-28 11:50:24

标签: mysql oxid

我在更新氧化eshop 4.7中的表 public void createHoleObjectType (GameObject holeObject, HoleObjectType holeObjectType, Vector3 holeObjectPosition, bool isCollider2DEnabled) { currentHoleObject = (GameObject)Instantiate (holeObject, holeObjectPosition, Quaternion.identity); setHoleObjectType (holeObjectType); } 时面临一种奇怪的行为。

oxseo具有以下架构:

oxseo

并且在字段上有一个PRIMARY(,也是键名)键:

+------------+---------+----------+----------+----------+----------+-------+
| OXOBJECTID | OXIDENT | OXSHOPID | OXLANGID | OXSTDURL | OXSEOURL | [...] |
+------------+---------+----------+----------+----------+----------+-------+

我尝试通过linux shell执行以下sql(用虚拟数据替换实值):

+---------+----------+--------+
| OXIDENT | OXSHOPID | OXLANG |
+---------+----------+--------+

导致错误:

  

ERROR 1062(23000):重复录入' 8e4b0ac7 [...] - oxbaseshop-0'对于关键' PRIMARY'`

但是,当使用phpMyAdmin在整个表中查找字符串UPDATE oxseo SET OXIDENT = "8e4b0ac7[...]", OXSEOURL = "my/seo/url/" WHERE OXOBJECTID = "123"` 时,没有返回任何行。尽管我已经使用

手动检查了
8e4b0ac7[...]

等等。

任何人都知道原因是什么?

1 个答案:

答案 0 :(得分:2)

很简单。无论该更新语句尝试做什么,都会使表处于PRIMARY键中具有重复条目(2行或更多行)的状态,如show create table oxseo的输出中所示。

该PRIMARY键可以位于单个列上,也可以是复合(多列)键。

db引擎禁止它,因为架构禁止它。