Se ha excedido el tiempo de espera de bloqueo de mysql; intente reiniciar la transacción


26

estamos ejecutando la aplicación java, ejecutándose por años, el back-end es db es MySQL, actualizado recientemente a mysql 5.6. Todo estaba funcionando bien, la semana pasada comenzó a aparecer este error Se excedió el tiempo de espera de bloqueo; intente reiniciar la transacción que parece que nunca se detiene, no sé qué hacer con este error para detener. por qué está ocurriendo de repente

Respuestas:


29

Puede establecer la variable innodb_lock_wait_timeout = 100 para el tiempo de bloqueo en 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   |
+--------------------------+-------+

La transacción que es tiempo de espera, intente bloquear la tabla que está en espera por otro proceso. y su variable de tiempo de espera establecida con un pequeño número de segundos. entonces muestra error. Puede ver más estado por el comando.

SHOW ENGINE INNODB STATUS\G 

Puede ver la lista de tablas bloqueadas por-

 show open tables where in_use>0;

Ahora vea el hilo que está usando esta tabla

  show full processlist;

ahora puedes matar ese hilo o esperar para completarlo.



Gracias por esta información, pero ¿cómo se puede llegar a la raíz del problema cuando continúan los bloqueos, incluso en tablas muy simples con pequeñas actualizaciones (como incrementar o actualizar un solo campo).
Wouter

-1

Si utiliza una versión de MySQL inferior a 5.0, no puede cambiar la variable ni siquiera para la sesión o el alcance global. La mejor solución es capturar la consulta y ejecutarla después de que el tráfico sea lento.


2
OP dice que están usando 5.6, que (supongo) es 5.0 o superior.
RDFozz
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.