Lorsque j'essaie de supprimer une table, MySQL se bloque. Je n'ai pas d'autres sessions ouvertes. Comment résoudre ça? J'ai attendu 10 heures et le processus n'est pas terminé.
Waiting for table metadata lock
drop table tableA name
SELECT l1.lat, l1.lon, l2.zipcode FROM tableA l1, tableBl2 where l1.lat = l2.latitude and l1.lon = l2.longitude limit 10
Si c'est votre table, voir ce lien
vous avez un blocage implicite. Tuez les autres transactions pour libérer la goutte ou tuez-la pour libérer les autres transactions.
Vous pouvez utiliser KILL thread_id, dans sql_plus.
J'ajoute des informations supplémentaires depuis que j'ai trouvé une autre expérience intéressante.
Metadata
Des verrous morts peuvent également se produire entre une opération ddl sur une table donnée (drop
, alter
...) et un select requête sur cette table.
Oui, select
.
Donc, si vous bouclez sur un curseur dans mysql (ou php, par exemple avec pdo::fetch
), et vous exécutez une instruction ddl sur les mêmes tables, vous obtiendrez un blocage.
Une solution à ce scénario atypique consiste à libérer systématiquement les verrous implicites avec une instruction commit
une fois que toute instruction select est complètement récupérée.
Redémarrer MySQL n'est peut-être pas la plus jolie solution, mais cela a fonctionné pour moi:
Sudo /etc/init.d/mysql restart
mysqladmin drop YOURDATABASE
J'essaie une réponse plus facile pour les débutants comme je le suis:
1) exécuter:
SHOW PROCESSLIST
si vous obtenez quelque chose comme:
+----+-----------------+-----------------+--------+------------+-----------+---------------------------------+---------------------------------------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+-----------------+-----------------+--------+------------+-----------+---------------------------------+---------------------------------------------------+
| 4 | event_scheduler | localhost | NULL | Daemon | 580410103 | Waiting on empty queue | NULL |
| 13 | root | localhost:50627 | airbnb | Sleep | 10344 | | NULL |
| 17 | root | localhost:50877 | NULL | Query | 2356 | Waiting for table metadata lock | SHOW FULL COLUMNS FROM `airbnb`.`characteristics` |
| 18 | root | localhost:50878 | airbnb | Query | 2366 | Waiting for table metadata lock | DROP TABLE `airbnb`.`characteristics` |
| 21 | root | localhost:51281 | airbnb | Query | 2305 | Waiting for table metadata lock | SHOW FULL COLUMNS FROM `airbnb`.`bed_type` |
| 22 | root | localhost:51282 | airbnb | Query | 2301 | Waiting for table metadata lock | SHOW INDEXES FROM `airbnb`.`characteristics` |
| 23 | root | localhost:51290 | airbnb | Query | 2270 | Waiting for table metadata lock | SHOW FULL COLUMNS FROM `airbnb`.`property_type` |
| 24 | root | localhost:51296 | airbnb | Query | 2240 | Waiting for table metadata lock | SHOW INDEXES FROM `airbnb`.`property_type` |
| 26 | root | localhost:51303 | NULL | Query | 2212 | Waiting for table metadata lock | SHOW FULL COLUMNS FROM `airbnb`.`characteristics` |
| 27 | root | localhost:51304 | NULL | Query | 2218 | Waiting for table metadata lock | SHOW FULL COLUMNS FROM `airbnb`.`bed_type` |
| 29 | root | localhost:51306 | NULL | Query | 2176 | Waiting for table metadata lock | SHOW INDEXES FROM `airbnb`.`characteristics` |
| 30 | root | localhost:51308 | NULL | Query | 2122 | Waiting for table metadata lock | DROP TABLE `airbnb`.`characteristics` |
| 34 | root | localhost:51312 | NULL | Query | 2063 | Waiting for table metadata lock | SHOW FULL COLUMNS FROM `airbnb`.`characteristics` |
| 35 | root | localhost:51313 | NULL | Query | 2066 | Waiting for table metadata lock | SHOW FULL COLUMNS FROM `airbnb`.`bed_type` |
| 39 | root | localhost:51338 | NULL | Query | 2004 | Waiting for table metadata lock | SHOW FULL COLUMNS FROM `airbnb`.`characteristics` |
| 40 | root | localhost:51339 | NULL | Query | 2008 | Waiting for table metadata lock | SHOW FULL COLUMNS FROM `airbnb`.`bed_type` |
| 45 | root | localhost | airbnb | Field List | 997 | Waiting for table metadata lock | |
| 46 | root | localhost | airbnb | Field List | 798 | Waiting for table metadata lock | |
| 53 | root | localhost | airbnb | Query | 0 | starting | SHOW PROCESSLIST |
+----+-----------------+-----------------+--------+------------+-----------+---------------------------------+---------------------------------------------------+
avec l'État: en attente du verrouillage des métadonnées de la table (comme mentionné dans la réponse officielle)
2) KILL 13
(13 correspondant à l'identifiant).
S'il s'agit bien d'une impasse, tous les processus suivants se poursuivront normalement.