2013-01-02 39 views
15

Tôi gặp sự cố với việc quản lý chỉ mục bên trong cửa hàng Magento 1.6.2.0 của tôi. Về cơ bản tôi không thể yêu cầu họ cập nhật. Tình trạng nói Processing nhưng nó nói như vậy trong hơn 3 tuần nay.Vấn đề chỉ mục Magento - Không thể reindex

Và khi tôi cố gắng reindex tôi nhận được thông báo này Stock Status Index process is working now. Please try run this process later nhưng sau đó là 3 tuần ngay bây giờ? Vì vậy, có vẻ như quá trình này đã bị đóng băng nhưng tôi không biết cách khởi động lại.

Bất kỳ ý tưởng nào?

cổ vũ

+0

bạn đã thấy điều này chưa? http://stackoverflow.com/questions/5315684/magento-catalog-url-rewrites-stuck-on-processing – pzirkind

+0

Có thể trùng lặp [Làm thế nào để gỡ lỗi thời gian chờ khóa đã vượt quá trên MySQL?] (http://stackoverflow.com/questions/6000336/how-to-debug-lock-wait-timeout-exceeded-on-mysql) –

Trả lời

28

Bất cứ khi nào bạn bắt đầu một quá trình lập chỉ mục, Magento viết ra một tập tin khóa vào thư mục var/locks.

$ cd /path/to/magento 
$ ls var/locks 
index_process_1.lock index_process_4.lock index_process_7.lock 
index_process_2.lock index_process_5.lock index_process_8.lock 
index_process_3.lock index_process_6.lock index_process_9.lock 

Tệp khóa ngăn người dùng khác bắt đầu quá trình lập chỉ mục. Tuy nhiên, nếu yêu cầu lập chỉ mục hết hoặc thất bại trước khi nó có thể hoàn thành, tệp khóa sẽ được để lại trong trạng thái khóa. Đó có thể là những gì đã xảy ra với bạn. Tôi khuyên bạn nên kiểm tra ngày sửa đổi cuối cùng trên các tệp khóa để đảm bảo người khác không chạy trình lập chỉ mục lại ngay bây giờ và sau đó xóa các tệp khóa. Thao tác này sẽ xóa rõ ràng

Quy trình chỉ mục trạng thái cổ phiếu của bạn hiện đang hoạt động. Vui lòng thử chạy quy trình này sau

lỗi. Sau đó, chạy từng người lập chỉ mục để đảm bảo mỗi người hoàn thành.

+0

Cảm ơn Alan .. Tôi không biết rằng Re-index có đằng sau điều này quy trình .. + 1 .. – Elavarasan

+0

Lifesaver !!!!!! – AndrewBramwell

+0

Tuyệt vời !!! Cảm ơn bạn! – danilodeveloper

3

Xin chào Bạn có gọi kịch bản bằng tay nếu không sau đó tạo ra một tập tin trong thư mục gốc của bạn và viết mã này trong nó

require_once 'app/Mage.php'; 
umask(0); 
Mage :: app("default"); 
$process = Mage::getSingleton('index/indexer')->getProcessByCode('catalog_product_flat'); 
$process->reindexAll(); 

mã này làm chỉ mục của Magento của bạn bằng tay một số lần nó xảy ra rằng nếu cửa hàng Magento của bạn chứa số lượng lớn các sản phẩm, do đó, bạn sẽ cần nhiều thời gian để tái tạo sản phẩm, vì vậy khi bạn có thể quản lý chỉ mục của mình từ quản trị viên, nó sẽ hiển thị một số chỉ mục trong giai đoạn xử lý do đó có thể mã này sẽ giúp bạn xóa giai đoạn xử lý thành giai đoạn sẵn sàng của các chỉ mục của bạn.

hoặc bạn cũng có thể lập chỉ mục với SSH nếu bạn có quyền của nó. nó nhanh quá cho chỉ mục

+0

Dựa trên câu trả lời này, tôi đã viết một giải pháp chi tiết hơn cho Magento> = 1.9.1.0 http://magento.stackexchange.com/a/130663/13642 –

1

Bạn cần phải làm hai bước:

  1. cho 777 permition để var/khóa thư mục
  2. xóa tất cả các tập tin của var/khóa thư mục
0

Bất cứ khi nào bạn bắt đầu một quá trình lập chỉ mục, Magento ghi ra một tệp khóa vào thư mục var/locks. Vì vậy, UOU cần phải làm hai bước:

  1. Cho 777 phép var/khóa thư mục
  2. Xóa tất cả tập tin của var thư mục/ổ khóa.

Bây giờ, hãy làm mới trang quản lý chỉ mục trong bảng quản trị. Tận hưởng !!

0

Đối với phiên bản mới hơn của Magento, tức là 2.1.3 Tôi đã phải sử dụng giải pháp này: http://www.elevateweb.co.uk/magento-ecommerce/magento-error-sqlstatehy000-general-error-1205-lock-wait-timeout-exceeded

Điều này có thể xảy ra nếu bạn đang chạy rất nhiều kịch bản tùy chỉnh và giết chết các kịch bản trước khi kết nối cơ sở dữ liệu được cơ hội để đóng

Nếu bạn đăng nhập vào MySQL từ CLI và chạy lệnh

SHOW PROCESSLIST;

bạn sẽ nhận được kết quả như sau

+ --- + ------ + ------- + ------ + --- + - + - - + —————— + ———– + ————— + ———– +

| Id | Người dùng | Máy chủ | db | Lệnh | Thời gian | Tiểu bang | Thông tin | Rows_sent | Rows_examined | Rows_read |

+ ——— + —————– + ——————- + —————– + ——— + —— + ——- + —————— + - ——– + ————— + ———– +

| | 6794372 | db_user | 111.11.0.65:21532 | db_name | Ngủ | 3800 | | NULL | 0 | 0 | 0
| | 6794475 | db_user | 111.11.0.65:27488 | db_name | Ngủ | 3757 | | NULL | 0 | 0 | 0
| | 6794550 | db_user | 111.11.0.65:32670 | db_name | Ngủ | 3731 | | NULL | 0 | 0 | 0
| | 6794797 | db_user | 111.11.0.65:47424 | db_name | Ngủ | 3639 | | NULL | 0 | 0 | 0
| | 6794909 | db_user | 111.11.0.65 WEBC6029 | db_name | Ngủ | 3591 | | NULL | 0 | 0 | 0
| | 6794981 | db_user | 111.11.0.65 WEBC9201 | db_name | Ngủ | 3567 | | NULL | 0 | 0 | 0
| | 6795096 | db_user | 111.11.0.65:2390 | db_name | Ngủ | 3529 | | NULL | 0 | 0 | 0
| | 6795270 | db_user | 111.11.0.65:10125 | db_name | Ngủ | 3473 | | NULL | 0 | 0 | 0
| | 6795402 | db_user | 111.11.0.65:18407 | db_name | Ngủ | 3424 | | NULL | 0 | 0 | 0
| | 6795701 | db_user | 111.11.0.65:35679 | db_name | Ngủ | 3330 | | NULL | 0 | 0 | 0
| | 6800436 | db_user | 111.11.0.65:57815 | db_name | Ngủ | 1860 | | NULL | 0 | 0 | 0
| | 6806227 | db_user | 111.11.0.67:20650 | db_name | Ngủ | 188 | | NULL | 1 | 0 | 0
+ ——— + —————– + ——————- + —————– + ——— + —— + ——- + —————— + —— - + ----- + ---- +

15 hàng trong set (0.00 giây)

Bạn có thể thấy là một ví dụ 6.794.372 lệnh là giấc ngủ và thời gian là 3800. Điều này đang ngăn các hoạt động khác Các quy trình này phải bị giết 1 bởi 1 bằng lệnh.

KILL 6794372; Khi bạn đã giết tất cả các kết nối ngủ, mọi thứ sẽ bắt đầu hoạt động bình thường trở lại

Các vấn đề liên quan