Trả lại reindex Magento 2 Không có thực thể như vậy


14

Tôi đã di chuyển thành công danh mục từ Magento 1.9.2.3 sang Magento 2.0.2. Sau khi di chuyển, tôi đã reindex sử dụng lệnh php bin/magento indexer:reindex.

Tất cả được giới thiệu lại thành công, ngoại trừ các chỉ mục catalog_category_productcatalog_product_category, trả lại No such entity.trong shell và thông báo Reindex Requiredtrong quản trị viên. Tôi đã kiểm tra var/log/nhưng không có lỗi.

Kết quả là, các sản phẩm được thêm vào các danh mục trong phần phụ trợ nhưng các danh mục hiển thị trống trên frontend.

Điều gì có thể gây ra vấn đề này? Làm thế nào tôi có thể gỡ lỗi?


Câu trả lời:


7

Ngoài Raphael:

Tôi đã gỡ lỗi mã này bằng cách thay đổi hàm tạo ngoại lệ cho mục đích gỡ lỗi (bằng xdebug hoặc bãi cũ). Thay đổi cấu trúc của ngoại lệ bây giờ (tệp là \lib\internal\Magento\Framework\Exception\NoSuchEntityException.php)

$trace = debug_backtrace();
var_dump($trace[1]['class'] . '::' . $trace[1]['function'] . '('.$trace[1]['line'] .')';
die();

Sau đó, đi lên một ngăn xếp và kiểm tra các đối số được đưa ra (các đối số cũng có sẵn trong backtrace gỡ lỗi, nhưng việc bỏ các đối tượng magento không thực sự thân thiện với trình duyệt).

Đến kết luận, đó là storeGroupRepositorynơi nó không thể tìm thấy id nhóm. Lặn vào các bảng cửa hàng và thấy một vài dòng trong bảng cửa hàng đang tham chiếu một store_groupcái không có trong store_groupbảng (nhóm cửa hàng không tồn tại trong bảng có liên quan).

Đã xóa các dòng cửa hàng bị lỗi và lỗi đã biến mất kể từ đó.

Nhưng, hãy nhớ rằng nó cũng có thể ở một bảng khác / lý do khác. ví dụ trang web, lưu trữ chính nó hoặc nhóm cửa hàng trong trường hợp này. Vì vậy, đó luôn luôn là một tìm kiếm nhỏ bạn phải tự thực hiện.

Cũng phát hiện ra rằng có khá nhiều tài liệu tham khảo đến các cửa hàng này và cũng đã xóa chúng theo cách thủ công trong db. Đây có thể là một công việc tẻ nhạt nhưng nó sẽ giải quyết vấn đề.

Và đừng quên loại bỏ hack của bạn.


Tại sao bạn không sử dụng xdebug thay thế?
Lu-ca

@TimVroom Tôi cũng có lỗi tương tự. Xin hãy giúp tôi magento.stackexchange.com/q/236187/24878
akgola

10

Không chắc chắn nếu điều này là quá muộn để thêm, nhưng khi tôi có nó Nó dường như được gây ra bởi một số id thực thể cần được đặt thành 0.

Kịch bản này đã làm việc cho tôi:

SET FOREIGN_KEY_CHECKS=0;
UPDATE `store` SET store_id = 0 WHERE code='admin';
UPDATE `store_group` SET group_id = 0 WHERE name='Default';
UPDATE `store_website` SET website_id = 0 WHERE code='admin';
UPDATE `customer_group` SET customer_group_id = 0 WHERE customer_group_code='NOT LOGGED IN';
SET FOREIGN_KEY_CHECKS=1;

Hy vọng nó giúp.


Điều này đã giúp tôi rất nhiều, cảm ơn bạn đã chia sẻ!
favo

Điều này cũng làm việc cho tôi :)
Owen

3

Ok, No such entity.thông báo lỗi đến từ\lib\internal\Magento\Framework\Exception\NoSuchEntityException.php .

Lớp này là lớp ngoại lệ tùy chỉnh của Magento và nó được sử dụng rất nhiều trong Magento 2.

Bất cứ khi nào bạn thấy mã như:

catch (NoSuchEntityException $e)

Hoặc là

throw NoSuchEntityException;

Lớp này đang được sử dụng.

Vấn đề trong trường hợp của bạn là thật khó để tìm ra nơi mà ngoại lệ đó được ném ra.

Vì vậy, để thu hẹp nó một chút, bạn có thể bắt đầu gỡ lỗi hai lớp liên quan đến các chỉ mục của bạn không thành công:

  • Magento\Catalog\Model\Indexer\Category\Product=> catalog_carget_product index
  • Magento\Catalog\Model\Indexer\Product\Category=> catalog_product_carget index

May mắn thay, cái thứ hai mở rộng cái đầu tiên để bạn có một điểm bắt đầu.

Bạn phải nhớ rằng mỗi lớp chỉ mục này sử dụng các lớp hàng hành động để xử lý reindexing:

  • Magento\Catalog\Model\Indexer\Product\Category\Action\Rows
  • Magento\Catalog\Model\Indexer\Category\Product\Action\Rows

Đối với tôi đó là nơi bạn nên bắt đầu gỡ lỗi vì các lớp hàng hành động đó là các lớp trực tiếp đang giới thiệu lại hai chỉ mục đó.

Tôi thực sự hy vọng nó sẽ giúp bạn tìm ra vấn đề của bạn.


Xin chào @Raphael, tôi có vấn đề tương tự đối với việc tạo khách hàng sau khi di chuyển. Xin hãy giúp tôi magento.stackexchange.com/q/236187/24878
akgola

0

ĐIỀU NÀY LÀM VIỆC CHO TÔI SAU KHI XỬ LÝ MỌI THỨ.

Giả sử trang web của bạn đang hoạt động Developer Mode, bạn có thể thay đổi nó thành Production Modevà xóa / xóa bộ đệm và sau đó chuyển vềDeveloper Mode .

Tôi đã có vấn đề này ở mặt trước, vì gần đây tôi đã chuyển cơ sở dữ liệu từ máy chủ này sang máy chủ khác. Tôi đã quản lý để giải quyết bằng cách này.

HY VỌNG NÀY H HEL TRỢ MỘT SỐ.



0

Lỗi này, trong trường hợp của tôi, là do thiết lập nhiều cửa hàng, đa miền. Magento cắt ngắn mã cửa hàng. Nếu bạn ánh xạ tên miền để lưu trữ mã, hãy đảm bảo mã cửa hàng khớp với định tuyến được chỉ định trong index.php (hoặc bất cứ nơi nào bạn ánh xạ). Trong kiểm tra quản trị viên trong "Cửa hàng" > " Tất cả cửa hàng ." Kiểm tra trang web của bạn, lưu trữ và xem mã cửa hàng xem.

Khi tôi nhận ra Magento đã cắt bớt mã cửa hàng tôi đã nhập và thực hiện điều chỉnh tương tự trong ánh xạ & mọi thứ bắt đầu hoạt động trở lại.

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.