Jawaban:
Saya baru saja mendapatkan kesalahan yang sama (rollback transaksi asimetris) ketika saya mencoba memperbarui beberapa kategori setelah mengimpor data menggunakan alat migrasi data Magento.
Reindex manual memperbaiki masalah saya, untuk secara manual mengindeks ulang database Anda melalui ssh jalankan perintah berikut dari instalasi Magento Anda:
php bin/magento indexer:reindex
Jika itu tidak membantu Anda mungkin ingin melihat laporan bug berikut: https://github.com/magento/magento2/issues/3720
Masalah teratasi dan berikut ini adalah langkah-langkahnya
Reindex dengan menggunakan perintah berikut
php bin/magento indexer:reindex
jalankan perintah di bawah ini
rm -rf var/cache/*
rm -rf var/page_cache/*
rm -rf var/generation/*
Berikan izin ke var/generation
folder.
Juga, kesalahan ini terjadi dalam situasi ketika Anda telah mengkonfigurasi mesin pencari eksternal (Solr atau Elasticsearch) dan tidak tersedia selama penyimpanan produk / kategori.
Ini bukan solusi yang lengkap tetapi dapat membantu Anda mendeteksi sumber masalah dalam beberapa kasus. Komentari plugin save sekitar di kelas ini Magento\CatalogSearch\Model\Indexer\Fulltext\Plugin\Product
dan Anda akan melihat kesalahan pengecualian
Jika Anda menggunakan katalog tetap dan pengindeksan ulang tidak berfungsi, mungkin Anda hanya kehabisan batasan baris MySQL . Anda harus mematikan katalog datar atau mengurangi jumlah atribut yang menggunakan opsi used in product listing
dan used for sorting in product listing
.
Saya punya solusi lain untuk masalah yang satu ini dan itu mudah.
Hanya Anda dapat mengubah mode pengindeksan ulang untuk pengindeks terkait produk -> Perbarui berdasarkan jadwal.
Saya juga menghadapi masalah kesalahan rollback transaksi asimetris dengan MySql InnoDB cluster, Jadi saya tidak bisa menyimpan produk dan kategori dan ketika saya mencetak pesan kesalahan
`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
Setelah pencarian yang panjang komit ini memperbaiki masalah saya. https://github.com/magento/magento2/commit/4b51ee19353fb39263991f38663ad2fabcb1ce84#diff-08d583954f382bd67bd8f89c7c2345c6