创建具有错误引擎的表后无法删除表

时间:2016-06-22 14:03:59

标签: mysql sql infinidb

我试图删除包含数十万个基于列的记录的表。通常在创建数据库时我使用基于列的引擎(infinidb)但在这种情况下我忘了包含ENGINE语句。所以数据库几乎无法满足我的需求。现在我有一个数据库,里面装满了永远丢失的桌子(已经过了两个小时,什么都没发生)。我尝试了ALTER TABLE表ENGINE = INFINIDB命令但又一次,它需要永远(参见上面的re:两个小时)。编辑:我尝试的第一个命令是DROP TABLE。它挂在每张桌子上。然后我尝试了ALTER命令以防由于某种原因更快,但它不是。

有没有其他方法可以摆脱这个数据库?例如。手动进入/ mysql /目录并删除数据库?我想我可以重命名并离开它,但我宁愿完全摆脱它,以免占用空间。

2 个答案:

答案 0 :(得分:0)

首先,你说不能删除表。但是在帖子中你提到了ALTER TABLE table ENGINE=INFINIDB

但是DROP != ALTER这是两件不同的事情。

所以你可以这样做:

  • CREATE具有相同结构的新表,但您需要引擎。
  • 将旧表格中的数据(UPDATE)复制到您刚创建的数据。
  • DROP旧桌子。
  • RENAME将新名称重命名为旧名称

答案 1 :(得分:0)

原来,另一个进程(一个网站)正在使用这个数据库并且有一些查询在SQL服务器中“卡住”并导致表因数据库使用错误的引擎而挂起,我是m假设是InnoDB,因为我最初使用“CREATE TABLE table1 AS SELECT * FROM table2”命令时没有指定引擎。我们终于设法擦除数据库并重新开始。谢谢你的帮助。