sql >> Databasteknik >  >> RDS >> Mysql

MySQL:timeout för låsväntetid har överskridits

Jag håller med Erik; TRUNCATE TABLE är vägen att gå. Men om du inte kan använda det av någon anledning (till exempel om du inte egentligen vill ta bort varje rad i tabellen), kan du prova följande alternativ:

  • Ta bort raderna i mindre omgångar (t.ex. DELETE FROM bundle_inclusions WHERE id MELLAN ? och ?)
  • Om det är en MyISAM-tabell (faktiskt kan det här fungera med InnoDB också), försök att utfärda en LÅSTtabell före DELETE. Detta bör garantera att du har exklusiv åtkomst.
  • Om det är en InnoDB-tabell, sedan efter timeout inträffar, använd VISA INNODB-STATUS. Detta bör ge dig en inblick i varför låsningen misslyckades.
  • Om du har SUPER-privilegiet kan du prova VISA PROCESSLISTA ALLA för att se vilka andra anslutningar (om några) som använder tabellen och sedan använda KILL för att bli av med den/de du konkurrerar med.

Jag är säker på att det finns många andra möjligheter; Jag hoppas att någon av dessa hjälper.



  1. Välj ALLA fält som endast innehåller VERSALER

  2. Hur infogar man värden i tabell med främmande nyckel med MySQL?

  3. Använder DATE_ADD med ett kolumnnamn som intervallvärde

  4. Hur skapar man id med AUTO_INCREMENT på Oracle?