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

MySQL:timeout di attesa del blocco superato

Sono d'accordo con Erik; TRUNCATE TABLE è la strada da percorrere. Tuttavia, se non puoi utilizzarlo per qualche motivo (ad esempio, se non lo fai realmente vuoi eliminare ogni riga della tabella), puoi provare le seguenti opzioni:

  • Elimina le righe in batch più piccoli (ad es. DELETE FROM bundle_inclusions WHERE id BETWEEN ? e ?)
  • Se è una tabella MyISAM (in realtà, potrebbe funzionare anche con InnoDB), prova a emettere una LOCK TABLE prima di DELETE. Questo dovrebbe garantirti l'accesso esclusivo.
  • Se è una tabella InnoDB, dopo si verifica il timeout, utilizzare SHOW INNODB STATUS. Questo dovrebbe darti un'idea del motivo per cui l'acquisizione del blocco non è riuscita.
  • Se hai il privilegio SUPER puoi provare SHOW PROCESSLIST ALL per vedere quali altre connessioni (se presenti) stanno usando il tavolo, quindi usare KILL per sbarazzarti di quelle con cui stai gareggiando.

Sono sicuro che ci sono molte altre possibilità; Spero che uno di questi aiuti.