Deadlock found when trying to get lock; try restarting transaction (1213)
Запрос: UPDATE cscart_categories SET cscart_categories.product_count = ( SELECT COUNT(*) FROM cscart_products_categories WHERE cscart_products_categories.category_id = cscart_categories.category_id) WHERE cscart_categories.category_id IN (5660, 778)
Добрый день.
У нас версия cs-cart 4.12.2, та же проблема:
База данных (Ошибка)
Внимание: Deadlock found when trying to get lock; try restarting transaction (1213)
Запрос: UPDATE cscart_commerceml_import_entities SET process_id = ‘60f96842970d14.23265083’ WHERE import_id = 125 AND entity_type = ‘product’ AND entity_id = ‘wtbj03sxhiYJGeFYCHlU50’
index.php (fn_dispatch): 25
app/functions/fn.control.php (fn_run_controller): 434
app/functions/fn.control.php (include): 685
app/addons/commerceml/controllers/frontend/commerceml.php (dispatch): 251
app/addons/commerceml/src/CommandBus.php (handleCommand): 56
app/addons/commerceml/src/CommandBus.php ({closure}): 132
app/addons/commerceml/schemas/cml/commands.php (handle): 59
app/addons/commerceml/src/Commands/AImportCommandHandler.php (getQueue): 92
app/addons/commerceml/src/Storages/ImportStorage.php (findNextRecord): 368
app/addons/commerceml/src/Repository/ImportEntityRepository.php (query): 155
app/Tygh/Database/Connection.php (throwError): 518
@cs-cart_team @pavel.sh Добрый день. Пожалуйста, взгляните на тему и порекомендуйте, как можно траблшутить проблему.
Нужно создать тикет в Help desk. В рамках форума мы, к сожалению, не сможем изучить эту проблему
Можно проверить тип движка у таблиц:
cscart_commerceml_imports
cscart_commerceml_import_entities
cscart_commerceml_import_entity_map
cscart_commerceml_import_removed_entities
У нас было обращение от клиента, в магазине которого эти таблицы были сконвертированы в InnoDB. В этом случае решение - конвертировать таблицы обратно в MyiSAM.
это архитектурная ошибка, советы перейти на MyiSAM примерно как советовать больным пить аспирин при инсульте, лок всей таблице ускорит агонию уже в других местах.
самое простое решение использовать транзакции (дописать), если MyiSAM, то перевести в innodb, скорее всего лок идет на таблицу, написать процедуру которая будет снимать лок после 2 минут автоматом, это боль карта при малейшей нагрузке, особенно с такими запросами как в первом посте
Могли бы поподробнее рассказать, что можно сделать? Примерно в каких файлах копаться и что там делать.
Ни в коем случае не проявляю токсичность.
Вам отписали решение довольно детально.
Если вы не поняли о чём речь, то вам скорее нужно передать вышеприведённый текст разработчику.
Как думаете, если бы у меня был разработчик, я бы задавал подобные вопросы на форуме?