Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie löst man MySQL innodb Waiting for table metadata lock on TRUNCATE TABLE?

Das Problem hier scheint einfach genug zu sein.

---TRANSACTION 7490, ACTIVE 3047 sec
MySQL thread id 189, OS thread handle 0x7f03be9fb700, query id 3840 10.0.2.1 root cleaning up
Trx read view will not see trx with id >= 7491, sees < 7491
---

Thread 189 (eine Client-Verbindung) ist im Leerlauf, und das schon seit einer Weile, aber es hat eine laufende Transaktion gelassen. Dies ist wahrscheinlich ein Fehler im Code, der die Datenbank verwendet, da es keinen Sinn macht, eine laufende Transaktion fast eine Stunde lang laufen zu lassen.

mysql> KILL 189;

Das sollte die Metadatensperre aufheben ... aber Sie müssen herausfinden, warum dies geschieht. Bad Things™ wird passieren, wenn sich eine Anwendung nicht besser verhält.

Außerdem ... sollte sich Ihre Anwendung nicht als root verbinden . Nicht im Zusammenhang mit dem Problem, aber nicht gut, wenn es das ist.