Lỗi danh mục: Mục (Magento \ Catalog \ Model \ Category \ Interceptor) có cùng ID ID 191 191 đã tồn tại


9

Tôi biết có một vấn đề tương tự liên quan đến một sản phẩm , nhưng bây giờ tôi đã gặp lỗi này với một danh mục.

Tôi không thể nhớ rằng tôi đã làm một cái gì đó khác biệt, nó đột nhiên bắt đầu ném lỗi này ngay khi tôi vào một trang chuyên mục trên frontend.

Đôi khi, việc lưu lại danh mục trong quản trị viên đã giải quyết được vấn đề, nhưng hầu hết các lần đều không. Lỗi này đến từ đâu? Làm thế nào để khắc phục nó? Có ai khác gặp phải lỗi này quá không?

Biên tập

Có vẻ như trang danh mục yêu cầu bảng viết lại URL cho URL. Nó tạo ra truy vấn này:

SELECT `e`.*, 
   IF(at_is_active.value_id > 0, at_is_active.value, 
   at_is_active_default.value) AS 
   `is_active`, 
   `url_rewrite`.`request_path` 
FROM   `catalog_category_entity` AS `e` 
   INNER JOIN `catalog_category_entity_int` AS `at_is_active_default` 
           ON ( `at_is_active_default`.`entity_id` = `e`.`entity_id`) 
              AND ( `at_is_active_default`.`attribute_id` = '46' ) 
              AND `at_is_active_default`.`store_id` = 0 
   LEFT JOIN `catalog_category_entity_int` AS `at_is_active` 
          ON ( `at_is_active`.`entity_id` = `e`.`entity_id` ) 
             AND ( `at_is_active`.`attribute_id` = '46' ) 
             AND ( `at_is_active`.`store_id` = 1 ) 
   LEFT JOIN `url_rewrite` 
          ON ( url_rewrite.entity_id = e.entity_id ) 
             AND ( url_rewrite.is_autogenerated = 1 
                   AND url_rewrite.store_id = 1 
                   AND url_rewrite.entity_type = 'category' ) 
WHERE  ( IF(at_is_active.value_id > 0, at_is_active.value,   
     at_is_active_default.value) 
            = 
            '1' ) 
   AND ( `e`.`entity_id` IN( '10', '170', '171', '172', 
                             '173', '175', '176', '177', 
                             '178', '179', '180', '189', '276' ) ) 
ORDER  BY `e`.`position` ASC 

Nhưng nếu url_rewrite-table của bạn bị hỏng (rất có thể trong trường hợp của tôi), thì kết cục là có ID trùng lặp.


2
Sometimes re-saving the category in the admin resolved the issueĐiều này làm việc cho tôi, Cảm ơn !!
nuwaus

3
Tôi có cùng một vấn đề, nhưng lưu lại danh mục không giúp được gì.
Oliver Schmid

Ai đó tìm thấy một sửa chữa? Tôi có cùng một vấn đề, đối với tôi nó là lạ. Có 10 cửa hàng được tạo trong chỉ 3 cửa hàng và 1 cửa hàng mặc định, trang danh mục hoạt động nhưng trong các cửa hàng khác thì không. Tôi đã thiết lập rằng trang chủ là một trang danh mục
Gianni Di Falco

Câu trả lời:


11
  1. Xóa các bản ghi khỏi bảng 'url_rewrite' trong đó "entity_type" là "danh mục".
  2. chạy php bin/magento indexer:reindex

Nó có 3000 bản ghi, vì vậy tôi đã cắt bớt bảng để thực hiện công việc này :(
fudu

3
  1. Chuyển đến Bảng quản trị> Tiếp thị> Viết lại URL.
  2. Lọc theo "category / {entity_id} (gây ra lỗi đã tồn tại)" trong targer_path. Nếu bạn tìm thấy target_path tương tự cho cùng một cửa hàng thì hãy xóa cái đó.
  3. Chạy php bin/magento indexer:reindex

3

Các truy vấn SQL sau đây dọn sạch các mục viết lại trùng lặp. Không sử dụng mà không có bản sao lưu.

Bạn có thể sử dụng n98-magerun2 db:consolehoặc bất kỳ máy khách mysql nào khác:

 delete
  from url_rewrite
  where url_rewrite_id in (
    select url_rewrite_id
    FROM (select url_rewrite_id
      from url_rewrite
      where entity_type = 'category'
      group by target_path, store_id
      having count(*) > 1) t
  )

0

Đối với chúng tôi chỉ cần chạy này đã lừa

php bin/magento indexer:reindex

Lỗi của chúng tôi (với Magento 2.2.2) là khi thực hiện tìm kiếm lối vào hoặc nhập danh mục:

Ngoại lệ # 0 (Ngoại lệ): Mục (Magento \ Catalog \ Model \ Product \ Interceptor) có cùng ID "XXXX" đã tồn tại.


Không biết lý do tại sao bình luận này bị đánh giá thấp, nhưng reindexing thực sự đã sửa lỗi vào ngày 2.3.4
puntable
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.