sql >> Base de Datos >  >> RDS >> Mysql

La eliminación de la tabla hace que MySQL se cuelgue

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 su tabla, consulte este enlace

usted tiene un interbloqueo implícito. Elimine las otras transacciones para liberar la gota, o elimine la gota para liberar las otras transacciones.

Puede usar KILL thread_id, en sql_plus.

Estoy agregando más información ya que se me ocurrió otra experiencia interesante.

Metadata Los bloqueos inactivos pueden ocurrir igualmente entre una operación ddl en una tabla dada (drop , alter ...) y seleccionar consulta en esa tabla.

Sí, select .

Entonces, si recorre un cursor en mysql (o php, por ejemplo con pdo::fetch ), y ejecuta una instrucción ddl en la(s) misma(s) tabla(s), obtendrá un interbloqueo.

Una solución a este escenario atípico es liberar los bloqueos implícitos con un commit declaración sistemáticamente después de que cualquier declaración de selección se haya obtenido por completo.