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
Jeśli to jest Twoja tabela, zobacz ten link
masz do czynienia z impasem. Zabij inne transakcje, aby zwolnić spadek, lub zabij spadek, aby zwolnić inne transakcje.
Możesz użyć KILL id_wątku, w sql_plus.
Dodaję dalsze informacje, ponieważ wymyśliłem kolejne ciekawe doświadczenie.
Metadata
Martwe blokady mogą również wystąpić między operacją ddl na danej tabeli (drop
, alter
...) i wybierz zapytanie w tej tabeli.
Tak, select
.
Tak więc, jeśli zapętlisz kursor w mysql (lub php, na przykład za pomocą pdo::fetch
) i uruchomisz instrukcję ddl na tych samych tabelach, utkniesz w martwym punkcie.
Jednym z rozwiązań tego nietypowego scenariusza jest zwolnienie niejawnych blokad za pomocą commit
systematycznie po całkowitym pobraniu dowolnej instrukcji select.