Разблокировка таблиц, если поток потерян
http://dev.mysql.com/doc/refman/5.0/en/internal-locking.html
Ниже приводится выдержка из документации.
mysql> LOCK TABLES real_table WRITE, temp_table WRITE;
mysql> INSERT INTO real_table SELECT * FROM temp_table;
mysql> DELETE FROM temp_table;
mysql> UNLOCK TABLES;
Мой вопрос в том, что если я использую эту логику в коде оболочки script, и если поток потерян (не убит) до того, как он достигнет инструкции "разблокировать таблицы", как я узнаю, что некоторые таблицы заблокированы и как открывать таблицы вручную?
Ответы
Ответ 1
как я узнаю, что некоторые таблицы заблокированы?
Вы можете использовать команду SHOW OPEN TABLES для просмотра заблокированных таблиц.
как разблокировать таблицы вручную?
Если вы знаете идентификатор сеанса, который заблокировал таблицы - "SELECT CONNECTION_ID()", вы можете запустить команду KILL, чтобы завершить сеанс и разблокировать таблицы.
Ответ 2
Вот что я делаю для FORCE UNLOCK Для некоторых заблокированных таблиц в MySQL
1) Введите MySQL
mysql -u your_user -p
2) Посмотрите список заблокированных таблиц
mysql> show open tables where in_use>0;
3) Посмотрите список текущих процессов, один из которых заблокирует вашу таблицу (ы)
mysql> show processlist;
4) Убейте один из этих процессов
mysql> kill put_process_id_here;
Ответ 3
С Sequel Pro:
Перезапуск приложения разблокирует мои таблицы. Он сбрасывает соединение сеанса.
NOTE: I was doing this for a site on my local machine.