Mysql
 sql >> Database >  >> RDS >> Mysql

La caduta della tabella fa bloccare MySQL

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

Se questa è la tua tabella, consulta questo link

hai uno stallo implicito. Elimina le altre transazioni per rilasciare il rilascio o elimina il rilascio per rilasciare le altre transazioni.

Puoi usare KILL thread_id, in sql_plus.

Aggiungo ulteriori informazioni poiché mi è venuta in mente un'altra esperienza interessante.

Metadata I dead lock possono verificarsi ugualmente tra un'operazione ddl su una determinata tabella (drop , alter ...) e un seleziona interrogazione su quel tavolo.

Sì, select .

Quindi, se passi sopra un cursore in mysql (o php, ad esempio con pdo::fetch ), ed esegui un'istruzione ddl sulle stesse tabelle, otterrai un deadlock.

Una soluzione a questo scenario atipico è rilasciare i blocchi impliciti con un commit istruzione sistematicamente dopo che qualsiasi istruzione select è stata completamente recuperata.