Відповіді:
Я просто отримував ту саму помилку (асиметричний відкат транзакцій), коли намагався оновити деякі категорії після імпорту даних за допомогою інструменту перенесення даних Magento.
Уручну перевстановити проблему для мене, щоб вручну перевстановити вашу базу даних через ssh, просто запустіть таку команду зі своєї установки Magento:
php bin/magento indexer:reindex
Якщо це не допомагає, ви можете переглянути наступний звіт про помилку: https://github.com/magento/magento2/isissue/3720
Проблема вирішена, і наступні кроки - це
Повторне виведення за допомогою наступної команди
php bin/magento indexer:reindex
бігайте нижче команд
rm -rf var/cache/*
rm -rf var/page_cache/*
rm -rf var/generation/*
Дайте дозволи на var/generation
папку.
Також ця помилка виникає в ситуації, коли ви налаштували зовнішню пошукову систему (Solr або Elasticsearch), і вона недоступна під час збереження продукту / категорії.
Це не повне рішення, але може допомогти вам виявити джерело проблеми в деяких випадках. Прокоментуйте плагін збереження навколо цього класу, Magento\CatalogSearch\Model\Indexer\Fulltext\Plugin\Product
і ви побачите помилку винятку
Якщо ви використовуєте плоский каталог і повторне оновлення не працює, можливо, у вас просто не вистачає обмежень рядків MySQL . Вам слід або вимкнути плоский каталог, або зменшити кількість атрибутів, які використовують параметри used in product listing
та used for sorting in product listing
.
У мене є ще одне рішення цього питання, і це легко.
Просто ви можете змінити режим перевстановлення для продуктового індексатора -> Оновити за розкладом.
Я також зіткнувся з проблемою помилки відкидання асиметричної транзакції з кластером MySql InnoDB, тому я не зміг зберегти продукт і категорію, і коли я друкую повідомлення про помилку
`SQLSTATE[HY000]: General error: 1787 Statement violates GTID consistency: CREATE TEMPORARY TABLE and DROP TEMPORARY TABLE can only be executed outside transactional context. These statements are also not allowed in a function or trigger because functions and triggers are also considered to be multi-statement transactions., query was: CREATE TEMPORARY TABLE IF NOT EXISTS `catalog_product_index_eav_temp` LIKE `catalog_product_index_eav_tmp
Після тривалого пошуку ця фіксація вирішила мою проблему. https://github.com/magento/magento2/commit/4b51ee19353fb39263991f38663ad2fabcb1ce84#diff-08d583954f382bd67bd8f89c7c2345c6