2016-02-09 20 views
8

Wiem, że to pytanie zostało już zadane kilka razy, ale mój problem dotyczy właśnie utworzonego przeze mnie stołu. Ma tylko 10 kolumn i tylko 1 wiersz.MySql alter table zawiesza się

W przeciwieństwie do zwykłego problemu z zawieszeniem, nie dotyczy to dużego stołu z dużą ilością danych. A jednak wisi.

To sql biegnę:

ALTER TABLE `db`.`Search` 
ADD COLUMN `useremail` VARCHAR(256) NOT NULL COMMENT '' AFTER `id`; 

dość prosty, a mimo to wisi Próbowałem rzucić Workbench i Eclipse i usuwając wszystkie java procesów i jeden mysqld proces (50 minut i liczenia.). Ale bez powodzenia.

Używam Mac OSX El Capitain. Jak dodać tę kolumnę do mojego stołu?

+0

Czy mógłbyś uruchomić to zapytanie 'Pokaż pełną listę procesową' i powiedz mi czy istnieje zapytanie takie jak' ALTER TABLE 'db''Search' ADD COLUMN' useremail' VARCHAR (256) NOT NULL COMMENT '' AFTER' id ';' działa? – 1000111

+0

@SubrataDeyPappu Tak, jest. "Stan" to "Oczekiwanie na blokadę metadanych tabeli". – Eddy

+0

Co to jest PID tego procesu? ile rekordów znajduje się w tabeli? – 1000111

Odpowiedz

19

Mam na to pytanie, wyszukując "mysql alter table hanging" i myślę, że odpowiedź (w komentarzach) powinna być udokumentowana.

Jeśli używasz polecenia MySQL (w tym przypadku, aby dodać kolumnę) i jest ono nieoczekiwanie zawieszone, np. nie ze względu na rozmiar danych w tabeli, a następnie sprawdź inne procesy działające w bazie danych. Wyszedłem z kwerendy działa, podłączony do serwera z innym klientem, a wpisane

SHOW PROCESSLIST; 

Moje zapytanie zostało wiszące, a ta wiadomość była w kolumnie state:

Waiting for table metadata lock 

zauważyłem, miałem kilka zombie połączenia z mojego komputera, zabił je (KILL xxx gdzie xxx jest liczbą w kolumnie Id), a następnie proces zakończył się natychmiast.

+2

Wystarczy dodać ... Polecenie 'kill' zostało uruchomione w terminalu MySQL, nie było konieczne, aby je zamknąć. Dzięki! –

Powiązane problemy