Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Upuszczanie tabeli powoduje zawieszanie się MySQL

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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. BŁĄD 1030 (HY000) w wierszu 25:Wystąpił błąd 168 z silnika pamięci masowej

  2. #1221 — Nieprawidłowe użycie UPDATE i ORDER BY

  3. Uwzględnić nagłówki podczas korzystania z funkcji SELECT INTO OUTFILE?

  4. Jak sprawdzić, na którym porcie działa MySQL i czy można go podłączyć?

  5. Jak powinny być przechowywane IP przekonwertowane ip2long w MySQL?