mysql - update - select for share
La tabla de caĆda hace que MySQL se cuelgue (2)
Cuando intento soltar una tabla, MySQL se cuelga. No tengo otras sesiones abiertas. ¿Cómo resolver esto? He esperado 10 horas y el proceso no ha terminado.
Reiniciar MySQL podría no ser la solución más bonita, pero me funcionó:
sudo /etc/init.d/mysql restart
mysqladmin drop YOURDATABASE
Waiting for table metadata lock
drop table tableA name
SELECT l1.lat, l1.lon, l2.zipcode FROM tableA l1, tableBl2 where l1.lat = l2.latitude and l1.lon = l2.longitude limit 10
Si esta es tu mesa, mira este enlace.
Tienes un punto muerto implícito. Matar a las otras transacciones para liberar la caída, o matar a la caída para liberar las otras transacciones.
Puedes usar KILL thread_id, en sql_plus.
Estoy agregando más información ya que se me ocurrió otra experiencia interesante.
Metadata
bloqueos muertos de Metadata
pueden ocurrir igualmente entre una operación de ddl en una tabla determinada ( drop
, alter
...) y una consulta de selección en esa tabla.
Sí, select
.
Por lo tanto, si pdo::fetch
un cursor en mysql (o php, por ejemplo, con pdo::fetch
), y ejecuta una declaración de ddl en la misma tabla, obtendrá un interbloqueo.
Una solución para este escenario atípico es liberar sistemáticamente los bloqueos implícitos con una declaración de commit
una vez que se haya recuperado por completo cualquier instrucción de selección.