sql >> Database >  >> RDS >> Mysql

MySQL:time-out voor vergrendelingswachttijd overschreden

Ik ben het met Erik eens; TRUNCATE TABLE is de juiste keuze. Als u dat echter om de een of andere reden niet kunt gebruiken (bijvoorbeeld als u echt elke rij in de tabel wilt verwijderen), kunt u de volgende opties proberen:

  • Verwijder de rijen in kleinere batches (bijv. DELETE FROM bundle_inclusions WHERE id BETWEEN ? en ?)
  • Als het een MyISAM-tabel is (eigenlijk kan dit ook met InnoDB werken), probeer dan een LOCK TABLE uit te geven voor de DELETE. Dit zou moeten garanderen dat je exclusieve toegang hebt.
  • Als het een InnoDB-tabel is, dan na de time-out optreedt, gebruik dan SHOW INNODB STATUS. Dit zou u enig inzicht moeten geven in de reden waarom de verwerving van het slot is mislukt.
  • Als je het SUPER-privilege hebt, zou je ALLES PROCESSLIJST TONEN om te zien welke andere connecties (indien aanwezig) de tabel gebruiken, en dan KILL gebruiken om degene(n) waarmee je concurreert te verwijderen.
  • li>

Ik weet zeker dat er nog veel meer mogelijkheden zijn; Ik hoop dat een van deze helpt.



  1. Door de gebruiker gedefinieerde functies van SQL Server

  2. SQLite-opdrachten

  3. Django + MySQL - Admin Site - Gebruiker toevoegen - OperationalError - SAVEPOINT bestaat niet

  4. MySQL - InnoDB versus MyISAM