我设法在我拥有的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'
有人能告诉我如何删除此表或整个数据库吗?我需要删除数据库,然后从我的备份转储重建它。
答案 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
的空文件。