Magento 2再インデックスプロセスのロックを解除する方法


65

Magentoの再インデックスプロセスでいくつかのテストを行っており、株価インデックスプロセスをロックしています。

このプロセスのロックを解除するにはどうすればよいですか?

Design Config Grid index has been rebuilt successfully in 00:00:02
Customer Grid index has been rebuilt successfully in 00:00:03
Category Products index has been rebuilt successfully in 00:00:00
Product Categories index has been rebuilt successfully in 00:00:00
Product Price index has been rebuilt successfully in 00:00:00
Product EAV index has been rebuilt successfully in 00:00:00
Stock index is locked by another reindex process. Skipping.
Catalog Rule Product index has been rebuilt successfully in 00:00:00
Catalog Product Rule index has been rebuilt successfully in 00:00:00
Catalog Search index has been rebuilt successfully in 00:00:06

回答:


118

コマンドを使用してコマンドラインからインデクサーをリセットできindexer:resetます。

これにより、インデックス名のリストが表示されます。

php bin/magento indexer:info

出力:

design_config_grid                       Design Config Grid
customer_grid                            Customer Grid
catalog_category_product                 Category Products
catalog_product_category                 Product Categories
catalog_product_price                    Product Price
catalog_product_attribute                Product EAV
catalogsearch_fulltext                   Catalog Search
cataloginventory_stock                   Stock
catalogrule_rule                         Catalog Rule Product
catalogrule_product                      Catalog Product Rule

これにより、インデックスステータスのリストが表示されます。

php bin/magento indexer:status

出力:

Design Config Grid:                                Ready
Customer Grid:                                     Ready
Category Products:                                 Ready
Product Categories:                                Ready
Product Price:                                     Ready
Product EAV:                                       Ready
Catalog Search:                                    Ready
Stock:                                             Processing
Catalog Rule Product:                              Ready
Catalog Product Rule:                              Ready

すべてのインデックスをリセットする場合は、次のコマンドを実行できます。

php bin/magento indexer:reset

特定のインデックスをリセットする場合(例cataloginventory_stock:)、次のコマンドを実行できます。

php bin/magento indexer:reset cataloginventory_stock

1
インデックスをリセットすると、インデックス作成を待機しているデータが失われますか?
ol'bobドール

magento 2.2.4 enterprise edition上記の手順を使用して解決したのと同じ問題に直面していますが、製品が前面に表示されません。問題は何ですか?
チラグパテル

グレート..私をたくさん助けた
エイミー

10

このような状況に直面したとき、次のSQLクエリをデータベースに直接実行する必要がありました。

UPDATE indexer_state SET status = 'valid';

インデックスが以前に失敗したときに、インデックスの再作成を強制するオプションを見つけることができませんでした。


6

MySQLの実行:

SET SQL_SAFE_UPDATES = 0;
update indexer_state set status = 'invalid' where status != 'valid';

次に、ターミナルで次を実行します。

php bin/magento indexer:reindex

通常、メモリ制限が少ないときに発生するため、.htaccessまたはNGINX configを増やします 。


1

コマンドを使用するだけです:

php bin/magento indexer:reset
php bin/magento indexer:reindex
php bin/magento cache:clean full_page block_html

0

MySQLでいくつかのテーブルがロックされている状態に陥ることもあります。この場合、unlock tables;SQLステートメントを発行して続行できます。

私はこのような問題に遭遇しました:

Category Products indexer process unknown error:
SQLSTATE[40001]: Serialization failure: 1213 Deadlock found when trying to get lock; try restarting transaction, query was: INSERT INTO

テーブルのロックが解除されるまでインデックスを再作成できませんでした。

インデックスをリセットすると、インデックス作成を待機しているデータが失われますか?–オルボブドール

インデックス作成は、データセットを調べて、適切なデータとペアにするためのキーを保存するプロセスです。プロセスで現在のインデックスが失われ、再作成されます。リソースを使い果たしたり、データセットが不正確であるというインデックスの副作用を除いて、インデックスを再作成するリスクはありません。



-2

次の手順でこの問題を解決しました。

1.-テーブルcustomer_grid_flatをドロップします

2.-テーブルを再作成します:

CREATE TABLE IF NOT EXISTS customer_grid_flatentity_idint UNSIGNED NOT NULL COMMENT 'Entity ID'、 nametext NULL COMMENT 'Name'、 emailvarchar(255)NULL COMMENT 'Email'、 group_idint NULL COMMENT 'Group_id'、 created_attimestamp NULL default NULL COMMENT 'Created_at'、 website_idint NULL COMMENT 'Website_id'、 confirmationvarchar(255)NULL COMMENT 'Confirmation'、 created_inテキストNULL COMMENT 'Created_in'、 dob日付NULL COMMENT 'Dob'、 genderint NULL COMMENT 'Gender'、 taxvatvarchar(255)NULL COMMENT 'Taxvat'、 lock_expiresタイムスタンプNULLデフォルトNULL COMMENT 'Lock_expires'、 shipping_fullテキストNULL COMMENT 'Shipping_full'、 billing_fullテキストNULL COMMENT ' Billing_full '、 billing_firstnamevarchar(255)NULL COMMENT' Billing_firstname '、 billing_lastnamevarchar(255)NULL COMMENT 'Billing_lastname'、 billing_telephonevarchar(255)NULL COMMENT 'Billing_telephone'、 billing_postcodevarchar(255)NULL COMMENT 'Billing_postcode'、 billing_country_idvarchar(255)NULL COMMENT 'Billing_country_id'、 billing_regionvarchar(255)NULL COMMENT 'Billing_region'、 billing_streetvarchar(255)NULL COMMENT 'Billing_street'、 billing_cityvarchar(255)NULL COMMENT 'Billing_city'、 billing_faxvarchar(255)NULL COMMENT 'Billing_fax'、 billing_vat_idvarchar(255)NULL COMMENT 'Billing_vat_id'、 billing_companyvarchar(255)NULL COMMENT 'Billing_company'、主キー(entity_id)、インデックスCUSTOMER_GRID_FLAT_GROUP_IDgroup_id)、インデックスCUSTOMER_GRID_FLAT_CREATED_ATcreated_at)、インデックスCUSTOMER_GRID_FLAT_WEBSITE_IDwebsite_id)、インデックスCUSTOMER_GRID_FLAT_CONFIRMATIONconfirmation)、INDEX CUSTOMER_GRID_FLAT_DOBdob)、INDEXCUSTOMER_GRID_FLAT_GENDERgender)、INDEX CUSTOMER_GRID_FLAT_BILLING_COUNTRY_IDbilling_country_id)、FULLTEXT FTI_8746F705702DD5F6D45B8C7CE7FE9F2Fnameemailcreated_intaxvatshipping_fullbilling_fullbilling_firstnamebilling_lastnamebilling_telephonebilling_postcodebilling_regionbilling_citybilling_faxbilling_companyENGINE = InnoDBの文字セット= UTF8のCOLLATE = utf8_general_ci 'customer_grid_flat'))COMMENT =

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.