Обновление заблокированной записи

Аватар пользователя Artalek Artalek 26 января в 13:18

Здравствуйте, помогите пожалуйста с проблемой:

Drupal\Core\Database\DatabaseExceptionWrapper: SQLSTATE[HY000]: General error: 1205 Lock wait timeout exceeded; try restarting transaction: UPDATE {user} SET step=:db_update_placeholder_0 WHERE id = :db_condition_placeholder_0; Array ( [:db_update_placeholder_0] => st2 [:db_condition_placeholder_0] => 297 ) in Drupal\mymodule\Repository\UserRepository::UpdateUser() (line 85 of /modules/custom/mymodule/src/Repository/UserRepository.php).

вот сама функция:

<?php
    
public static function UpdateUser($step$id) {
        
$connection Database::getConnection();
        
$transaction $connection->startTransaction();
        try {
            
$query $connection->update('user');
            
$query->fields(['step' => $step]);
            
$query->condition('id'$id);
            
$query->execute();
        } catch (
Exception $e) {
            
$transaction->rollBack();
            
drupal_set_message($e->getMessage(), 'error');
        }
    }
?>

Как я понял это из-за того, что очень много запросов update, но как быть щас? как это можно исправить?
Увеличил innodb_lock_wait_timeout с 50 до 100, но помогло не сильно

Лучший ответ

Аватар пользователя Artalek Artalek 26 января в 14:15

Проблема была в том, что забыл указать индексы к полям, теперь запросы выполняются быстрее, и вроде таких ошибок больше нет

Комментарии

Аватар пользователя vladtulku vladtulku 26 января в 14:12
1

$cfg['ExecTimeLimit'] число [число секунд]
Задает временное ограничение (в секундах) для выполнения скрипта. Если значение выставлено в 0, то никакого ограничения по времени наложено не будет.
Эта настройка используется при импорте/экспорте дампа, но не имеет смысла, когда PHP запущен в безопасном режиме.

Настраивается в phpMyAdmin файл config.inc.php

Аватар пользователя Artalek Artalek 26 января в 14:15

Проблема была в том, что забыл указать индексы к полям, теперь запросы выполняются быстрее, и вроде таких ошибок больше нет