在Mysql db中删除了搞砸的表

时间:2010-01-05 19:49:16

标签: mysql mysqladministrator

我设法在我拥有的mysql数据库(称为“e_learning_resource_prelive”)中损坏(或某些)'sessions'表。这通常不会成为问题,因为我可以回到数据库的备份转储。但是,损坏的表似乎阻止我删除数据库:

> 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 个答案:

答案 0 :(得分:7)

想出来,现在看起来很明显。 dbs都只有一个文件夹,可以像其他任何东西一样删除。

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

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

答案 1 :(得分:1)

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

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

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

ALTER TABLE `session` RENAME TO newname

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

答案 2 :(得分:-1)

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

或者文件系统上的基础文件可能已被删除?如果是这样,请尝试在那里创建一个名为sessions的空文件。