0

oxseo我在更新oxid eshop 4.7 中的表格时遇到了奇怪的行为。

该表oxseo具有以下架构:

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

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

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

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

UPDATE oxseo
SET
  OXIDENT = "8e4b0ac7[...]",
  OXSEOURL = "my/seo/url/"
WHERE
  OXOBJECTID = "123"`

这导致错误:

错误 1062 (23000):重复条目 '8e4b0ac7[...]-oxbaseshop-0' 用于键 'PRIMARY'`

8e4b0ac7[...]但是,当使用 phpMyAdmin 在整个表中查找字符串时,没有返回任何行。尽管我已经手动检查过

SELECT * FROM field1 = hash
SELECT * FROM field2 = hash

等等。

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

4

1 回答 1

2

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

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

数据库引擎禁止它,因为模式禁止它。

于 2016-06-28T12:15:20.953 回答