Tiempo de espera de bloqueo excedido; intente reiniciar la transacción


12

Recibo este error varias veces al día 4 - 5 veces.

SQLSTATE [HY000]: Error general: 1205 Tiempo de espera de bloqueo excedido; intente reiniciar la transacción

Esta vez reinicio mi phpmyadmin pero sucede una y otra vez. No puedo señalar este problema.

Estoy usando Magento ver. 1.9.0.1 en el sitio web. Tengo más de 7000 productos. En el servidor tengo 16 GB de RAM.

¿Cómo arreglar este problema?

Respuestas:


8

Debe considerar aumentar el valor de tiempo de espera de bloqueo para InnoDB configurando innodb_lock_wait_timeout , el valor predeterminado es 50 segundos

mysql> show variables like 'innodb_lock_wait_timeout';
+--------------------------+-------+
| Variable_name            | Value |
+--------------------------+-------+
| innodb_lock_wait_timeout | 50    |
+--------------------------+-------+
1 row in set (0.01 sec)

Puede establecerlo en un valor más alto de forma /etc/my.cnfpermanente con esta línea

[mysqld]
innodb_lock_wait_timeout=120

y reinicie mysql. Si no puede reiniciar mysql en este momento, ejecute esto:

SET GLOBAL innodb_lock_wait_timeout = 120; 

También puede configurarlo para la duración de su sesión

SET innodb_lock_wait_timeout = 120; 

seguido de su consulta


3
¿Por qué no 140 'o 2000'? ¿Cómo podría esto realmente resolver el problema? ocultándolo?
Elzo Valugi

tiene un problema que hace que las tablas se bloqueen más de lo razonablemente esperado. Si haces esto, te obligas a esperar 2 minutos cada vez en lugar de solucionar el problema una vez. Y como dice Elzo ... ¿qué sucede cuando 120 no es suficiente?
Carlos Robles

7

Verá este mensaje si el contenido de la base de datos al que está intentando acceder ha sido bloqueado por un proceso anterior (generalmente de larga duración). MySQL esperará una cierta cantidad de tiempo para que se elimine el bloqueo antes de que se dé por vencido y arroje ese error. Si puede realizar un seguimiento cuando ve estos mensajes de error en cualquier momento constante del día, debe ver qué más está haciendo el servidor en ese momento; por ejemplo, se está ejecutando una copia de seguridad de la base de datos. Al hacer esto, debería poder reducir las posibilidades de los procesos que podrían estar creando el bloqueo, aunque no siempre es tan fácil de hacer, probablemente sea un poco de prueba y error.


5

La razón detrás de este problema es si está ejecutando muchas secuencias de comandos personalizadas y eliminando las secuencias de comandos antes de que se cierre la conexión de la base de datos.

Algo está bloqueando la ejecución de la consulta. Lo más probable es que otra consulta se actualice, inserte o elimine de una de las tablas de su consulta. Tienes que averiguar qué es eso:

Si puede iniciar sesión en MySQL desde la CLI y ejecutar el siguiente comando

SHOW PROCESSLIST;

Una vez que localice el proceso de bloqueo / suspensión, búsquelo idy ejecute:

KILL {id};

Vuelva a ejecutar su consulta inicial.

Puede ser que este enlace lo ayude: SQLSTATE [HY000]: Error general: 1205 Tiempo de espera de bloqueo excedido; intente reiniciar la transacción Magento .


2

aumente el tiempo de ejecución en su php.ini en el servidor O solicite al proveedor de alojamiento.

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.