tempo limite de espera do bloqueio do mysql excedido; tente reiniciar a transação
26
estamos executando o aplicativo java, executando por idades, o back-end é o db é o MySQL, recentemente atualizado para o mysql 5.6. Tudo estava funcionando bem, a semana passada começou a receber esse erro O tempo limite de espera para bloqueio foi excedido; tente reiniciar a transação que parece nunca parar de terminar, não sei o que fazer com esse erro para parar. por que está ocorrendo de repente
Você pode definir a variável innodb_lock_wait_timeout = 100 para o tempo de bloqueio como 100 segundos.
mysql>set innodb_lock_wait_timeout=100;
Query OK,0rows affected (0.02 sec)
mysql> show variables like'innodb_lock_wait_timeout';+--------------------------+-------+| Variable_name | Value |+--------------------------+-------+| innodb_lock_wait_timeout |100|+--------------------------+-------+
A transação que está com tempo limite, tente bloquear a tabela que é retida por outro processo. e sua variável de tempo limite definida com pouco número de segundos. então mostra erro. Você pode ver mais status pelo comando
SHOW ENGINE INNODB STATUS\G
Você pode ver a lista de tabelas bloqueadas
show open tables where in_use>0;
Agora veja o thread que está usando esta tabela
show full processlist;
agora você pode matar esse segmento ou esperar para concluir.
Obrigado por essas informações, mas como chegar à raiz do problema quando os bloqueios continuam acontecendo, mesmo em tabelas muito simples com pequenas atualizações (como incrementar ou atualizar um único campo).
Wouter
-1
Se você estiver usando a versão do MySQL menor que 5.0, não poderá alterar a variável nem para a sessão ou para o escopo global. A melhor solução é capturar a consulta e executá-la após o tráfego ser lento.
Se você estiver usando a versão do MySQL menor que 5.0, não poderá alterar a variável nem para a sessão ou para o escopo global. A melhor solução é capturar a consulta e executá-la após o tráfego ser lento.
fonte