2012-06-03 16 views
15

Cuando trato de colocar una tabla, MySQL cuelga. No tengo ninguna otra sesión abierta. ¿Cómo resolver esto? He esperado 10 horas y el proceso no ha terminado.Dejar caer la tabla hace que cuelgue MySQL

+1

fija por favor el resultado de SHOW MOTOR DE ESTADO INNODB si la base de datos está bajo innodb por supuesto – Sebas

+0

se parece a la mesa que está intentando drop ya está en uso (bueno, quiero decir que ha sido bloqueado por algún otro proceso) y, por lo tanto, está esperando que el proceso se comprometa. – Rahul

+0

He agregado el resultado del registro. –

Respuesta

12
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 tabla, consulte this link

tiene un estancamiento implícita. Elimine las otras transacciones para liberar la caída, 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 las cerraduras pueden ocurrir en partes iguales entre una operación de DDL de una tabla dada (drop, alter ...) y un selecto consulta en esa mesa.

Sí, select.

Por lo tanto, si coloca un cursor sobre 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 una instrucción commit sistemáticamente después de que se haya recuperado completamente cualquier instrucción de selección.

+0

Bajé la tabla, y ahora no puedo crear una nueva tabla porque obtengo el código de error (28): no puedo sincronizar el archivo '..' con el disco. Supongo que al dejar caer la mesa tendré más espacio libre. –

+0

¿qué archivo? Creo que deberías reiniciar el servidor ya que el bloqueo duró mucho tiempo. – Sebas

+1

cuando ejecuto una declaración de tabla de creación realmente grande con múltiples columnas obtengo este mensaje de error. al reiniciar el servidor, ¿quiere decir salir y volver a conectarse? ¿Cómo se puede reiniciar el servidor? –

12

Reinicio de MySQL puede no ser la solución más bonita pero funcionó para mí:

sudo /etc/init.d/mysql restart 
mysqladmin drop YOURDATABASE 
+0

'mysql.server restart' funciona para mí. –

Cuestiones relacionadas