Câu trả lời:
Chỉ gặp lỗi tương tự (khôi phục giao dịch không đối xứng) khi tôi cố cập nhật một số danh mục sau khi nhập dữ liệu bằng công cụ di chuyển dữ liệu magento.
Một reindex thủ công đã khắc phục sự cố cho tôi, để reindex thủ công cơ sở dữ liệu của bạn thông qua ssh chỉ cần chạy lệnh sau từ cài đặt magento của bạn:
php bin/magento indexer:reindex
Nếu điều đó không giúp bạn có thể muốn xem báo cáo lỗi sau: https://github.com/magento/magento2/issues/3720
Vấn đề được giải quyết và sau đây là các bước
Reindex bằng cách sử dụng lệnh sau
php bin/magento indexer:reindex
chạy bên dưới các lệnh
rm -rf var/cache/*
rm -rf var/page_cache/*
rm -rf var/generation/*
Cấp quyền cho var/generation
thư mục.
Ngoài ra, lỗi này xảy ra trong một tình huống khi bạn đã định cấu hình công cụ tìm kiếm bên ngoài (Solr hoặc Elaticsearch) và nó không khả dụng trong quá trình lưu sản phẩm / danh mục.
Nó không phải là một giải pháp hoàn chỉnh nhưng nó có thể giúp bạn phát hiện nguồn gốc của vấn đề trong một số trường hợp. Nhận xét các plugin lưu xung quanh trong lớp này Magento\CatalogSearch\Model\Indexer\Fulltext\Plugin\Product
và bạn sẽ thấy lỗi ngoại lệ
Nếu bạn đang sử dụng danh mục phẳng và reindexing không hoạt động, thì có lẽ bạn đã hết hạn chế hàng MySQL . Bạn nên tắt danh mục phẳng hoặc giảm số lượng thuộc tính sử dụng used in product listing
và các used for sorting in product listing
tùy chọn.
Tôi có một giải pháp khác cho vấn đề này và thật dễ dàng.
Chỉ cần bạn có thể thay đổi chế độ reindex cho bộ chỉ mục liên quan đến sản phẩm -> Cập nhật theo lịch trình.
Tôi cũng đang phải đối mặt với vấn đề lỗi khôi phục giao dịch không đối xứng với cụm MySql InnoDB, vì vậy tôi không thể lưu sản phẩm và danh mục và khi tôi in thông báo lỗi
`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
Sau một thời gian dài tìm kiếm, cam kết này đã khắc phục vấn đề của tôi. https://github.com/magento/magento2/commit/4b51ee19353fb39263991f38663ad2fabcb1ce84#diff-08d583954f382bd67bd8f89c7c2345c6