В вашем сообщении недостаточно информации, чтобы точно отследить это. Когда вы сохраняете информацию о продукте в Magento, появляется несколько таблиц, информацию о которых необходимо обновить. Одна из этих таблиц имеет уникальный ключ из четырех столбцов, который по какой-то причине ваша система пытается обновить с помощью информации, которая может привести к тому, что четыре столбца в этом ключе будут дубликатом другой строки
Integrity constraint violation: 1062 Duplicate entry '168-122-1-7' for key 1
Вам необходимо выяснить, что это за таблица, а затем выяснить, почему Magento может вызывать это обновление. Самый быстрый способ сделать это - добавить несколько слов
lib/Zend/Db/Adapter/Abstract.php
Это класс, через который большинство запросов к базе данных направляются в Magento. Добавьте свою регистрацию в методы update
и insert
. Ищите место, где создаются строки SQL
$sql = "UPDATE "
. $this->quoteIdentifier($table, true)
. ' SET ' . implode(', ', $set)
. (($where) ? " WHERE $where" : '');
$sql = "INSERT INTO "
. $this->quoteIdentifier($table, true)
. ' (' . implode(', ', $cols) . ') '
. 'VALUES (' . implode(', ', $vals) . ')';
С этой регистрацией вы будете знать, какую последнюю таблицу Magento пытался вставить или обновить, прежде чем выдать это исключение, которое должно предоставить вам информацию, необходимую для устранения неполадок.