0

oxseo酸化 eshop 4.7 でのテーブルの更新に関する奇妙な動作に直面しています。

テーブルoxseoには次のスキーマがあります。

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

フィールドにPRIMARY (これは keyname でもあります) キーがあります。

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

そして、Linuxシェルを介して次のSQLを実行しようとします(実際の値をダミーデータに置き換えます):

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

エラーにつながる:

エラー 1062 (23000): キー 'PRIMARY' のエントリ '8e4b0ac7[...]-oxbaseshop-0' が重複しています`

8e4b0ac7[...]ただし、 phpMyAdmin を使用してテーブル全体で文字列を検索すると、行が返されません。それにもかかわらず、私は手動でチェックしました

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

等々。

誰でも原因が何であるか考えていますか?

4

1 に答える 1

2

とてもシンプルです。その update ステートメントが何をしようとしても、 の出力に見られるように、PRIMARY キーに重複したエントリ (2 つ以上の行) がある状態でテーブルが残されますshow create table oxseo

その PRIMARY キーは単一の列にある場合もあれば、複合 (複数列) キーである場合もあります。

スキーマが禁止しているため、db エンジンはそれを禁止しています。

于 2016-06-28T12:15:20.953 に答える