estamos executando o aplicativo java, em execução há muito tempo, o back-end é o MySQL, atualizado recentemente para o MySQL 5.6. Tudo estava funcionando bem, semana passada começou a receber este erro:
Tempo limite de espera de bloqueio 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 para 100 segundos.
A transação que está com tempo limite, tente bloquear a tabela que está retida por outro processo. e sua variável de tempo limite definida com um pequeno número de segundos. por isso apresenta erro. Você pode ver mais status pelo comando.
Você pode ver a lista de tabelas bloqueadas por-
Agora veja o thread que está usando esta tabela
agora você pode matar esse segmento ou esperar para completá-lo.
Se estiver usando a versão do MySQL inferior a 5.0, você não pode alterar a variável mesmo para a sessão ou escopo global. A melhor solução é capturar a consulta e executá-la depois que o tráfego estiver lento.