回答:
Magento data-migration-toolを使用してデータをインポートした後、一部のカテゴリを更新しようとすると、同じエラー(非対称トランザクションのロールバック)が発生しました。
手動でインデックスを再作成すると問題が解決しました。sshを使用してデータベースを手動でインデックスを再作成するには、Magentoインストールから次のコマンドを実行します。
php bin/magento indexer:reindex
それでも問題が解決しない場合は、次のバグレポートをご覧ください。https://github.com/magento/magento2/issues/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