2012-09-18 42 views
7

enter image description here Tôi đang gặp phải một vấn đề trong Magento. Tôi đang có một cửa hàng Magento với nhiều chức năng trang web có chứa khoảng 4500 sản phẩm. Tôi muốn lập chỉ mục lại sản phẩm.Vấn đề lập chỉ mục lại Magento

Tôi đã nhập 4500 sản phẩm bằng csv thông qua chức năng mặc định của Magento. sau khi nhập về sản phẩm thay đổi không được hiển thị trên mặt trước vì vậy tôi đã đi để quản lý chỉ mục và tôi thấy có hai chỉ số đang trong tình trạng chế biến

1 sản phẩm thuộc tính 2 sản phẩm Flat liệu

tôi đã thực hiện các bước sau:

1 cố gắng để tái-index nó từ quản trị viên bên hệ thống-> chỉ số quản lý

2 cố gắng làm bằng tay bằng cách gọi php script

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

HOẶC

$indexingProcesses = Mage::getSingleton('index/indexer')->getProcessesCollection(); 
foreach ($indexingProcesses as $process) { 
    $process->reindexEverything(); 
} 

Cũng thay đổi sự cho phép var/thư mục ổ khóa để 777 và cũng đổi tên thư mục đó và cũng cố gắng để xóa các tập tin .lock được tạo ra trong thư mục khóa này, nhưng không có giải pháp.

Tôi không có quyền SSH. Vì vậy, có bất kỳ giải pháp nào khác sẽ giúp tôi giải quyết vấn đề lập chỉ mục lại.

+0

Vấn đề thực tế là gì? Bạn đã đề cập một số cách mà bạn đã cố gắng tái lập chỉ mục, nhưng bạn chưa thực sự đề cập đến lý do tại sao nó là bất kỳ phương pháp nào cho đến nay vẫn chưa đủ. –

+0

Xin chào Will, tôi đã nhập 4500 sản phẩm của csv thông qua chức năng mặc định của Magento. sau khi nhập sản phẩm, các thay đổi không hiển thị ở mặt trước nên tôi đã đi đến quản lý chỉ mục và tôi thấy có hai chỉ mục đang ở trạng thái xử lý 1 Thuộc tính sản phẩm 2 Sản phẩm Dữ liệu phẳng – drsndodiya

+0

khi chỉ mục bị kẹt trong trạng thái "Đang xử lý" cho thời gian dài, có thể là các điều khoản trên các lockfiles trong thư mục var của Magento là sai. Magento liệt kê các chỉ mục là "Đang xử lý" bất cứ khi nào nó không thể lấy khóa, mà không làm phiền để kiểm tra lý do cho sự thất bại. Lý do phổ biến nhất để không mua khóa, ngoài việc xử lý chỉ mục thực sự bị khóa, là các khóa đã được tạo bởi một tài khoản người dùng khác. (ví dụ: nếu 'cron' được chạy dưới dạng' root', trong khi magento thường được truy cập bởi người dùng 'apache'). Đảm bảo Magento có quyền ghi vào ổ khóa. –

Trả lời

0

Lý do

Có tài liệu tham khảo để inexisting/sản phẩm xóa trong catalog_product_flat_ bảng%.

Giải pháp

Cố gắng cắt ngắn'catalog_product_flat_ 'bảng% (catalog_product_flat_1, catalog_product_flat_2, catalog_product_flat_3 vv) trong MySQL console hoặc thông qua phpMyAdmin:

mysql > truncate table ´catalog_product_flat_1´; 
mysql > truncate table ´catalog_product_flat_2´; 
mysql > truncate table ´catalog_product_flat_3´; 

Sau đó reindex.

+0

wouldn điều đó làm cho các chỉ mục thất bại âm thầm, thay vì được đánh dấu vĩnh viễn là "đang xử lý"? –

+0

Tôi phải lập chỉ mục mà không ảnh hưởng đến DB - Palanikumar – drsndodiya

+1

@Palanikumar: Nếu tôi chạy lệnh này, sẽ xóa danh mục sản phẩm của tôi hoặc sẽ không ảnh hưởng đến các sản phẩm đã được thêm vào. – Prashant

6

Chú ý: Trong khi các câu trả lời dưới đây có, trong kinh nghiệm của tôi, được có liên quan đến loại vấn đề, nó không xuất hiện là nguyên nhân của tình hình hiện kinh nghiệm của Asker

Processing nghĩa một trong hai điều:

  • Các chỉ mục thực sự vẫn có thể được chạy, trong trường hợp này, hãy đợi và đợi chúng hoàn tất. Magento lập chỉ mục có thể mất một thời gian rất dài (cho 4500 sản phẩm, "giờ" là có thể, tùy thuộc vào máy chủ).

  • Quá trình lập chỉ mục có thể đã chết, để lại các khóa cũ. Trong khi đó, người lập chỉ mục đã chết có thể được điều hành bởi một người dùng khác. Trường hợp phổ biến nhất là cron được định cấu hình không chính xác để chạy trình lập chỉ mục là root hoặc tài khoản người dùng thông thường, thay vì là cùng một người dùng được sử dụng bởi trang web (ví dụ: apache hoặc www).

Tất cả điều đó Processing thực sự có nghĩa là "Magento không thể lấy khóa cho các công việc lập chỉ mục này". Trường hợp đầu tiên là tầm thường và không quan tâm. Đợi một vài giờ và nếu cùng một chỉ mục vẫn được liệt kê là Processing, thì bạn có thể có trường hợp thứ hai.

Kiểm tra quyền của các tệp khóa, được tìm thấy dưới var/locks trong thư mục gốc magento của bạn. Chúng có thuộc quyền sở hữu của cùng một người dùng khi máy chủ web đang chạy không? Nếu không, và bạn hoàn toàn chắc chắn rằng các chỉ mục không còn hoạt động, bạn có thể an toàn để xóa khóa. Bước tiếp theo là tìm hiểu lý do tại sao các khóa có quyền sai ở vị trí đầu tiên. Đó là cuộc trò chuyện có thể tốt hơn với máy chủ lưu trữ của bạn, nếu bạn không có quyền truy cập ssh.

1

Các lỗi từ trình chỉ mục sẽ bị bắt và không được ghi nhật ký theo mặc định. Cách giải quyết điển hình là sử dụng công cụ lập chỉ mục CLI; sẽ rất tiết lộ với bất kỳ lỗi nào.

Ví dụ:

php shell/indexer.php --reindex ... 

Nhưng với bạn không có quyền truy cập SSH - bạn có thể nhìn vào các tập tin indexer.php để xem cách họ tạo ra các lỗi, hoặc bạn chỉ có thể khởi động một shell_exec hoặc exec từ PHP kịch bản dựa trên web sẽ mô phỏng CLI.

0

Tôi không thể lập lại quy trình chỉ mục catalog_product_flat. Sau khi chi tiêu một ngày và thử một số giải pháp trên Internet. tôi đã có thể khắc phục vấn đề. Dưới đây là các bước.

  1. Tạo bản sao của Magento Db đang đối mặt với vấn đề lập chỉ mục.
  2. Dump cơ sở dữ liệu vào db mới được tạo.
  3. cắt ngắn bảng catalog_product_flat_1 cho một cửa hàng và cho nhiều cửa hàng sẽ có nhiều bảng catalog_product_flat_* trong đó * là id cửa hàng. Ở đây cắt ngắn tất cả các bảng đó.
  4. trỏ cá thể chạy xoài vào cơ sở dữ liệu mới được tạo và định cấu hình databse để trang web hoạt động bình thường.
  5. Bây giờ hãy chạy lệnh php document_root/shell/indexer.php --reindex catalog_product_flat hoặc thử reindexing từ Quản trị viên. php document_root/shell/indexer.php --reindexall để reindexing tất cả các quá trình.
0

Tôi đã gặp vấn đề tương tự, khi tạo nhóm khách hàng mới, tôi không thể lập lại giá.

Tìm thấy giải pháp ở đây http://www.magikcommerce.com/blog/how-to-resolve-magento-reindexing-errors-in-your-magento-store/

Đây là thủ tục:

  1. Xác định vị trí var/khóa thư mục và loại bỏ tất cả các file trong thư mục này. Thao tác này sẽ xóa tất cả các khóa để lập chỉ mục lại để diễn ra lần nữa.

  2. Bây giờ, đăng nhập để MysQSL bạn/phpMyAdmin để chạy các truy vấn MySQL sau (Đảm bảo rằng bạn đã sao lưu đầy đủ trước khi cam kết truy vấn này MySQL)

    DELETE cpop. * FROM catalog_product_option_price AS cpop INNER JOIN catalog_product_option AS cpo TRÊN cpo.option_id = cpop.option_id WHERE cpo.type = 'checkbox' HOẶC cpo.type = 'radio' HOẶC cpo.type = 'drop_down';

    DELETE cpotp.* FROM catalog_product_option_type_price AS cpotp 
    INNER JOIN catalog_product_option_type_value AS cpotv 
    ON cpotv.option_type_id = cpotp.option_type_id 
    INNER JOIN catalog_product_option AS cpo 
    ON cpotv.option_id = cpo.option_id 
    WHERE 
    cpo.type <> 'checkbox' AND 
    cpo.type <> 'radio' AND 
    cpo.type <> 'drop_down'; 
    
  3. Đăng nhập lại bảng điều khiển quản trị Magento và chuyển đến tab Hệ thống> Chỉ mục lần truy cập quản lý chỉ mục và bạn sẽ không thấy lỗi như vậy xuất hiện nữa. Bạn có thể thực hiện lại các bước tương tự này nếu việc lập chỉ mục lại dừng lại trong tương lai để giải quyết các vấn đề MagentoReIndexing.

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