sql >> Database >  >> RDS >> Mysql

Hoe MySQL innodb op te lossen Wachten op vergrendeling van tabelmetadata op TRUNCATE TABLE?

Het probleem lijkt hier duidelijk genoeg.

---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 (een clientverbinding) is inactief, en zoals het al een tijdje is, maar er is een transactie gaande. Dit is waarschijnlijk een fout in de code die de database gebruikt, aangezien het geen zin heeft om een ​​lopende transactie bijna een uur te laten duren.

mysql> KILL 189;

Dat zou de metadatavergrendeling moeten vrijgeven... maar je moet uitzoeken waarom dit gebeurt. Bad Things™ zal gebeuren als een applicatie zich niet beter gedraagt ​​dan dit.

Ook... uw applicatie zou geen verbinding moeten maken als root . Niet gerelateerd aan het probleem, maar niet goed, als dat is wat dit is.




  1. Tekenreeks samenvoegen met veldwaarde in MySQL

  2. SQL Server:het maximum aantal rijen in tabel

  3. hoe selecteer je alleen een rij met een maximale reeks zonder een subquery te gebruiken?

  4. Geneste transacties gebruiken in Oracle