загрузка..

Задваивание значений атрибутов 0 0

Последнее обновление: 09/11/2021 10:59 in Handy Product Manager
Сообщение отСерж Ткач

В процессе заполнения атрибутов в Списке товаров модуля получается, что у товара создается один и тот же атрибут с двумя разными значениями. Одно значение пустое, второе - соответствует выбранном. Порядок действий был таким:

1) Выбрали в выпадающем списке атрибут
2) Выбрали в выпадающем списке значение

На сайте это выглядело вот так:

Дубли и задваивание атрбиутов в модуле Handy Product Manager для OpenCart

Решение:

В модуле версий 1.10.0 - 1.12.0.I при редактировании значений атрибутов использовался запрос ON DUPLICATE KEY UPDATE

Но, оказалось, что у пользователя в структуре таблицы `product_attribute` не было первичных ключей `attribute_id`, `language_id`.

Структура таблицы при экспорте была:

 

CREATE TABLE `oc_product_attribute` (
  `product_id` int(11) NOT NULL,
  `attribute_id` int(11) NOT NULL,
  `language_id` int(11) NOT NULL,
  `text` text NOT NULL,
  KEY `attribute_id` (`attribute_id`),
  KEY `language_id` (`language_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

 

Тогда как при установке выполняется:

CREATE TABLE `oc_product_attribute` ( 
  `product_id` int(11) NOT NULL,
  `attribute_id` int(11) NOT NULL,
  `language_id` int(11) NOT NULL,
  `text` text NOT NULL,
  PRIMARY KEY (`product_id`,`attribute_id`,`language_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;

Версия сервера базы данных: MySQL 5.7.21

Пробовал у себя (10.5.12-MariaDB) также создавать таблицу InnoDB, и у меня это не повлияло на наличие первичных ключей.

Попробовал создать клиенту клон таблицы из установочного файла OpenCart, и сработало ок: первичные ключи создались, тип таблицы был MyISAM.

Попробовал создать еще один клон таблицы на сервере клиента, но с типом InnoDB, в результате был создана таблица с первичными ключами. То есть, грешить на окружение нет смысла.

 

#задваивание, #дубли, #атрибуты, #атрибутов

** Время зависит от часового пояса America/New_York