0

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

还有其他方法可以摆脱这个数据库吗?例如手动进入 /mysql/ 目录并删除数据库?我想我可以重命名它并保留它,但我宁愿完全摆脱它,这样它就不会占用空间。

4

2 回答 2

0

首先你说Can't drop table。但是在你提到的帖子中ALTER TABLE table ENGINE=INFINIDB

但这DROP != ALTER是两种不同的东西。

因此,您可以执行以下操作:

  • CREATE具有相同结构但您需要引擎的新表。
  • 将旧表中的数据复制(UPDATE)到您刚刚创建的表中。
  • DROP旧表。
  • RENAME将新名称重命名为旧名称
于 2016-06-22T14:15:20.230 回答
0

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

于 2016-06-22T14:30:03.773 回答