Kiedy próbuję upuścić tabelę, MySQL zawiesza się. Nie mam żadnych innych otwartych sesji. Jak rozwiązać ten problem? Czekałem 10 godzin i proces się nie zakończył.Upuszczenie tabeli powoduje zawieszenie się MySQL
Odpowiedz
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 jest to tabela, zobacz this link
masz niejawny impasu. Zabij inne transakcje, aby zwolnić zrzut, lub zabij drop, aby zwolnić pozostałe transakcje.
Możesz użyć KILL wątku, w sql_plus.
Dodaję dalsze informacje, odkąd wymyśliłem kolejne interesujące doświadczenie.
Metadata
Martwe zamki mogą równie zdarzyć między operacji ddl w danej tabeli (drop
, alter
...) i wybierz zapytania na tym stole.
Tak, select
.
Tak więc, jeśli pętli nad kursorem w mysql (lub php, na przykład z pdo::fetch
), i uruchomisz ddl oświadczenie na tej samej tabeli (s), dostaniesz zakleszczenie.
Jednym z rozwiązań tego nietypowego scenariusza jest systematyczne uwalnianie niejawnych blokad za pomocą instrukcji commit
po pobraniu dowolnej instrukcji select.
Upuściłem tabelę, a teraz nie mogę utworzyć nowej tabeli, ponieważ otrzymuję kod błędu (28): nie mogę zsynchronizować pliku ".." z dyskiem. Zakładam, że poprzez zrzucenie stołu będę miał więcej wolnego miejsca. –
jaki plik? Myślę, że powinieneś zrestartować serwer, ponieważ blokada trwała długo. – Sebas
po uruchomieniu naprawdę dużego polecenia utworzenia tabeli z wieloma kolumnami pojawia się ten komunikat o błędzie. przez ponowne uruchomienie serwera, czy masz na myśli ponowne wyjście i ponowne połączenie? jak eksplodujesz restart serwera? –
Ponowne MySQL nie może być najładniejszą rozwiązanie ale pracował dla mnie:
sudo /etc/init.d/mysql restart
mysqladmin drop YOURDATABASE
'mysql.server restart' działa dla mnie. –
proszę umieszczać wynik SHOW ENGINE InnoDB Stan jeśli baza danych jest w InnoDB oczywiście – Sebas
wygląda stołu próbujesz drop jest już w użyciu (no cóż, mam na myśli to, że został zablokowany przez jakiś inny proces) i dlatego oczekuje na zatwierdzenie procesu. – Rahul
Dodałem dane wyjściowe dziennika. –