Magento Indexes Issue - не может переиндексации
У меня проблема с управлением индексами внутри моего магазина Magento 1.6.2.0. В основном я не могу заставить их обновляться. Статус говорит Processing
, но он говорит так вот уже более 3 недель.
И когда я пытаюсь переиндексировать, я получаю это сообщение Stock Status Index process is working now. Please try run this process later
, но позже уже 3 недели? Таким образом, похоже, что процесс заморожен, но я не знаю, как перезагрузиться.
Любые идеи?
веселит
Ответы
Ответ 1
Всякий раз, когда вы начинаете процесс индексирования, Magento выписывает файл блокировки в папку 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
Файл блокировки не позволяет другому пользователю начать процесс индексирования. Однако, если запрос индексации истекает или выходит из строя до его завершения, файл блокировки будет оставлен в состоянии блокировки. Вероятно, это случилось с тобой. Я бы рекомендовал вам проверить последние измененные даты в файлах блокировки, чтобы убедиться, что кто-то еще не запускает переиндексатор прямо сейчас, а затем удалите файлы блокировки. Это очистит ваш
Процесс индекса состояния запасов теперь работает. Повторите попытку позже.
ошибка. После этого запустите индексы по одному, чтобы убедиться, что каждый из них завершен.
Ответ 2
Здравствуйте Вы назовёте script вручную, если нет, тогда создайте один файл в корневой папке и напишите этот код в нем
require_once 'app/Mage.php';
umask( 0 );
Mage :: app( "default" );
$process = Mage::getSingleton('index/indexer')->getProcessByCode('catalog_product_flat');
$process->reindexAll();
этот код делает индексирование вашего пурпурного вручную несколько раз, когда случается, что если ваш магазин magento содержит большое количество продуктов, тогда потребуется много времени для переиндексации продуктов, поэтому, когда вы сможете перейти к управлению индексами от администратора, он покажет некоторые индексирования на этапе обработки, поэтому может быть этот код поможет вам удалить этап обработки на готовый этап ваших индексов.
или вы можете также индексировать SSH, если у вас есть права на него. это быстрее и для индексирования
Ответ 3
Вам нужно сделать два шага:
- предоставить разрешение 777 для папок var/locks
- удалить весь файл папки var/locks
Ответ 4
Всякий раз, когда вы начинаете процесс индексирования, Magento выписывает файл блокировки в папку var/locks. Поэтому вам нужно сделать два шага:
- Предоставить разрешение 777 для папок var/locks
- Удалить все файлы из папки var/locks.
Теперь обновите страницу управления индексами в панели администратора.
Наслаждайтесь!!
Ответ 5
Для более новых версий magento, т.е. 2.1.3, мне пришлось использовать это решение:
http://www.elevateweb.co.uk/magento-ecommerce/magento-error-sqlstatehy000-general-error-1205-lock-wait-timeout-exceeded
Это может произойти, если вы запускаете множество пользовательских скриптов и убиваете скрипты до того, как соединение с базой данных получит возможность закрыть
Если вы заходите в MySQL из CLI и выполняете команду
ПРОСМОТР ПРОГРАММЫ
вы получите следующий вывод
+ --- + ------ + ------- + ------ + --- + - + --- + ------ + - - + ----- + ---- +
| Id | Пользователь | Хост | db | Команда | Время | Государство | Информация | Rows_sent | Rows_examined | Rows_read |
+ --- + ------ + ------- + ------ + --- + - + --- + ------ + - - + ----- + ---- +
| | 6794372 | db_user | 111.11.0.65:21532 | db_name | Сон | 3800 | | NULL | 0 | 0 | 0
|
| 6794475 | db_user | 111.11.0.65:27488 | db_name | Сон | 3757 | | NULL | 0 | 0 | 0
|
| 6794550 | db_user | 111.11.0.65:32670 | db_name | Сон | 3731 | | NULL | 0 | 0 | 0
|
| 6794797 | db_user | 111.11.0.65:47424 | db_name | Сон | 3639 | | NULL | 0 | 0 | 0
|
| 6794909 | db_user | 111.11.0.65:56029 | db_name | Сон | 3591 | | NULL | 0 | 0 | 0
|
| 6794981 | db_user | 111.11.0.65:59201 | db_name | Сон | 3567 | | NULL | 0 | 0 | 0
|
| 6795096 | db_user | 111.11.0.65:2390 | db_name | Сон | 3529 | | NULL | 0 | 0 | 0
|
| 6795270 | db_user | 111.11.0.65:10125 | db_name | Сон | 3473 | | NULL | 0 | 0 | 0
|
| 6795402 | db_user | 111.11.0.65:18407 | db_name | Сон | 3424 | | NULL | 0 | 0 | 0
|
| 6795701 | db_user | 111.11.0.65:35679 | db_name | Сон | 3330 | | NULL | 0 | 0 | 0
|
| 6800436 | db_user | 111.11.0.65:57815 | db_name | Сон | 1860 | | NULL | 0 | 0 | 0
|
| 6806227 | db_user | 111.11.0.67:20650 | db_name | Сон | 188 | | NULL | 1 | 0 | 0
+ --- + ------ + ------- + ------ + --- + - + --- + ------ + ---- + ----- + ---- +
15 строк в наборе (0,00 с)
Вы можете видеть в качестве примера
6794372 команда спящая, а время - 3800. Это предотвращает другие операции
Эти процессы должны быть убиты 1 на 1 с помощью команды.
УБИЙСТВО 6794372;
Как только вы убили все спальные соединения, все должно снова начать работать как обычно.