Не працює оновлення товарів через Commerce Feeds (commerce kickstart)

Поставив збірку commerce kickstart - там все працює чудово. Додав модулі для імпорту з csv:
Commerce Feeds
Feeds
Feeds Admin UI
Feeds Import
Job Scheduler

Налаштував їх. Залило всі товари добре.

В налаштуваннях для Commerce Product processor, в параметрі "Update existing commerce products" поставив перемикач на "Update existing products"

Але, коли роблю зміни в csv-файлі і знову імпортую, то вилазить таке:

SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '7865' for key 'sku'
SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '766' for key 'sku'
SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '978' for key 'sku'

Failed importing 3 commerce products.

Тобто, загалом все працює, крім оновлення існуючих товарів і їх представлень.

Шукав цю проблему на друпал.орг, .ру і .юа - не знайшов :( Можливо, в когось була подібна ситуація?

Коментарів:

9

Коментувати

Увійдіть або зареєструйтесь, щоб додати коментар

Коментарі

http://drupal.org/project/commerce_kickstart
Reported installs: 4 sites currently report using this installation profile.
мне кажется его рано еще использовать

ошибка это появляется в базе данных и означает что вы пытаетесь вставить в базу данных поле с индексом который уже существует

Але, коли роблю зміни в csv-файлі і знову імпортую, то вилазить таке:
какие изменения вы делаете?

Дякую, що відгукнулися. drupal.ua завжди славиться оперативністю.

Я пробував змінювати всі поля, які мають оновлюватися в магазині, наприклад ціна, опис, кількість в наявності і т.д. SKU не чіпаю.

До параметру, який я вибрав (Update existing products) є коментар:
Existing commerce products will be determined using mappings that are a "unique target". SKU є якраз тим "unique target" по якому має проходити заміна - оновлення цін і т.д.

можно пример файлика с товарами, пару текстовых товаров хватит
я скачал шаблон файла для експорта, там нету таких полей

Я додав свої поля (/admin/commerce/products/types/product/fields)і, відповідно, створив свій шаблон в Mapping (/admin/structure/feeds/edit/product_import/mapping):

SKU - Product SKU
Title - Product title
Price - Price: Amount
Stock - Stock //к-ть товару в наявності
Importer - Importer //це текстове поле

Думаю, якби проблема була в файлі, то воно в перший раз не прописалося б. Помилка виникає тільки тоді, коли хочу оновити вже існуючі товари.

на странице admin/structure/feeds/edit/node/mapping
у вас не выбрано UNIQUE TARGET
потому как Product: SKU не может быть уникальным и получается у вас нет вообще уникального значения,правильно?

получается что модуль Импорта не знает о том что SKU является уникальным, а вы это знаете но не можете сказать это модулю.
В свою очередь модуль, так как у него нет уникального поля по которому он бы мог обновлять данные, каждый раз создает новые продукты.
Теперь проблема получается в том что в самом мускуле поле sku задано как уникальное
UNIQUE KEY `sku` (`sku`),
какой из этого есть выход:
1. Писать патч с помощью которого можно назначить sku уникальным
2. Писать разработчикам модуля что бы они исправили
3. Использовать NodeID как уникальное значение

не нашел как пофиксить это дело, в коде описано правильно
public function getMappingTargets() {
$targets = parent::getMappingTargets();
$targets += array(
'sku' => array(
'name' => t('Product SKU'),
'description' => t('The product identifier. Must be unique.'),
'optional_unique' => TRUE,
),

divka.com.ua/test2.csv - сюди залив тестовий файлик/

Кодування: UTF-8. Розмежування через TAB.

Полів там більше, бо цей самий файл використовується для імпорту product display.

product display, до речі, теж ніяк не реагує на зміну налаштувань в admin/structure/feeds/edit/product_display_importer/settings/FeedsNodeProcessor:
Do not update existing nodes
Replace existing nodes
Update existing nodes (slower than replacing them)

Щоб я з цих параметрів не вибирав, але з к кожним новим експортом, воно створює нові ноди (product displays) з прив'язкою до тих же товарів (products).

Таке враження, що завжди включене:
Do not update existing nodes