Стол с резьбой в Mysql db - PullRequest
       39

Стол с резьбой в Mysql db

8 голосов
/ 05 января 2010

Мне удалось испортить (или что-то) таблицу «сессий» в моей базе данных mysql (которая называется «e_learning_resource_prelive»). Обычно это не было бы проблемой, так как я мог просто вернуться к резервной копии базы данных. Однако поврежденная таблица, кажется, мешает мне удалить базу данных:

> mysqladmin -u root drop e_learning_resource_prelive
Dropping the database is potentially a very bad thing to do.
Any data stored in the database will be destroyed.

Do you really want to drop the 'e_learning_resource_prelive' database [y/N] y
mysqladmin: DROP DATABASE e_learning_resource_prelive failed;
error: 'Unknown table 'sessions''

Когда я захожу в базу данных, таблица сессий отображается в show_tables (она там единственная, mysqladmin drop удаляет остальные), но я не могу ее удалить:

mysql> show tables;
+---------------------------------------+
| Tables_in_e_learning_resource_prelive |
+---------------------------------------+
| sessions                              | 
+---------------------------------------+
1 row in set (0.00 sec)

mysql> drop table sessions;
ERROR 1051 (42S02): Unknown table 'sessions'

Может кто-нибудь сказать мне, как я могу удалить эту таблицу или всю БД? Мне нужно удалить базу данных, а затем пересобрать ее из резервной копии.

Ответы [ 3 ]

7 голосов
/ 07 января 2010

Понял, кажется вроде сейчас очевидно. Все базы данных имеют папку, которую можно удалить, как и все остальное.

sudo rm -r / var / lib / mysql / e_learning_resource_prelive

Спасибо всем, кто смотрел, все равно :) макс

1 голос
/ 06 июня 2011

session является зарезервированным ключевым словом (http://developer.mimer.com/validator/sql-reserved-words.tml), Я думаю, именно поэтому ваша база данных повреждена.

У меня была та же проблема с использованием зарезервированного ключевого слова (references в моем случае), и у меня также была проблема, что переименование, удаление или усечение таблицы приводили к ошибке sql.

Чтобы решить эту проблему, используйте символы обратной галочки в запросе alter table.

ALTER TABLE `session` RENAME TO newname

Таким образом, запрос не потерпит неудачу, и ваши данные все еще там (слава богу!). Я надеюсь, что кто-то найдет это полезным!

0 голосов
/ 05 января 2010

Использовать интерфейс GUI. Возможно, в имени sessions есть не очень печатный символ.

Или, может быть, основной файл в файловой системе был удален? Если это так, попробуйте создать пустой файл с именем sessions там.

...