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

Respostas:


29

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, 0 rows 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.


2
O OP diz que está usando a versão 5.6, que (presumo) é 5.0 ou superior.
precisa saber é o seguinte
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.