2016-02-09 2 views
8

Я знаю, что этот вопрос задавали несколько раз, но моя проблема происходит с таблицей, которую я только что создал. Он имеет только 10 столбцов и только 1 строку.MySql alter table hangs

В отличие от обычной проблемы с подвеской, это не относится к большой таблице с большим количеством данных. И все же он висит.

Это SQL Я бегу:

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

достаточно просто и пока он висит, я пытался бросить курить Workbench и Eclipse и удаление всех java процессов и один mysqld процесс (50 минут и подсчета голосов.). Но не повезло.

Я бегу на Mac OSX El Capitain. Как добавить этот столбец в мою таблицу?

+0

Вы можете запросить этот запрос «Показать полный список процессов» и сообщить мне, есть ли какой-либо запрос типа «ALTER TABLE» db'.Search' ADD COLUMN 'useremail' VARCHAR (256) NOT NULL COMMENT '' ПОСЛЕ' id ';' работает? – 1000111

+0

@SubrataDeyPappu Да есть. «Состояние» - «Ожидание блокировки метаданных таблицы». – Eddy

+0

Что такое PID этого процесса? сколько записей в таблице? – 1000111

ответ

19

Я получил этот вопрос, выполнив поиск «mysql alter table hang» и подумал, что ответ (в комментариях) должен быть документирован.

Если вы используете команду MySQL (в этом случае для добавления столбца), и она неожиданно висит, например. не из-за размера данных в таблице, а затем проверки других процессов, выполняющихся с базой данных. Я оставил запрос работает, подключенный к серверу с другим клиентом, и напечатал

SHOW PROCESSLIST; 

Мой запрос был висит, и это сообщение было в state колонке:

Waiting for table metadata lock 

я заметил, у меня было несколько зомби соединения с моей машиной, их убили (KILL xxx, где xxx - это номер в столбце Id), а затем процесс завершается немедленно.

+2

Просто для добавления ... Команда 'kill' запускалась в терминале MySQL, но ее не нужно было закрывать. Благодаря! –