8

我已经设法破坏(或其他)我拥有的 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'

谁能告诉我如何删除此表或整个数据库?我需要删除数据库,然后从我的备份转储中重建它。

4

3 回答 3

7

想通了,现在似乎有点明显了。dbs 都只有一个文件夹,可以像其他任何东西一样删除。

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

无论如何,谢谢任何看过的人:) max

于 2010-01-07T16:24:24.080 回答
1

session是保留关键字(http://developer.mimer.com/validator/sql-reserved-words.tml),我认为这就是您的数据库损坏的原因。

我在使用保留关键字(references在我的情况下)时遇到了同样的问题,而且我还遇到了重命名、删除或截断表导致 sql 错误的问题。

要解决此问题,请在 alter table 查询中使用反引号字符。

ALTER TABLE `session` RENAME TO newname

这样查询就不会失败,并且您的数据仍然存在(感谢上帝!)。我希望有人觉得这很有用!

于 2011-06-06T13:50:24.797 回答
-1

使用 GUI 界面。名称中可能有一些不可打印的字符sessions

或者文件系统上的底层文件可能被删除了?如果是这样,请尝试在此处创建一个名为的空文件sessions

于 2010-01-05T19:54:10.947 回答