Mysql
 sql >> Base de données >  >> RDS >> Mysql

MySQL :délai d'attente de verrouillage dépassé

Je suis d'accord avec Erik; TRUNCATE TABLE est la voie à suivre. Cependant, si vous ne pouvez pas l'utiliser pour une raison quelconque (par exemple, si vous ne le faites pas vraiment souhaitez supprimer toutes les lignes du tableau), vous pouvez essayer les options suivantes :

  • Supprimez les lignes par lots plus petits (par exemple, DELETE FROM bundle_inclusions WHERE id BETWEEN ? and ?)
  • S'il s'agit d'une table MyISAM (en fait, cela peut aussi fonctionner avec InnoDB), essayez d'émettre un LOCK TABLE avant DELETE. Cela devrait vous garantir un accès exclusif.
  • S'il s'agit d'une table InnoDB, alors après le délai d'expiration se produit, utilisez SHOW INNODB STATUS. Cela devrait vous donner une idée de la raison pour laquelle l'acquisition du verrou a échoué.
  • Si vous avez le privilège SUPER, vous pouvez essayer SHOW PROCESSLIST ALL pour voir quelles autres connexions (le cas échéant) utilisent la table, puis utiliser KILL pour vous débarrasser de celles avec lesquelles vous êtes en concurrence.

Je suis sûr qu'il existe de nombreuses autres possibilités; J'espère que l'un d'entre eux vous aidera.