我正在尝试删除一个包含数十万条基于列的记录的表。通常,在创建数据库时,我使用基于列的引擎(infinidb),但在这种情况下,我忘记了包含引擎语句。所以这个数据库很难满足我的需求。现在我有一个数据库,里面装满了要永远删除的表(已经两个小时了,什么也没发生)。我尝试了ALTER TABLE table ENGINE=INFINIDB命令,但这再一次耗时太长(参见上面的re:两个小时)。编辑:我尝试的第一个命令是DROP TABLE。它挂在每一张桌子上。然后,我尝试了ALTER命令,以防由于某种原因而更快,但它不是这样。
有没有其他方法可以删除这个数据库?例如,手动进入/mysql/目录并删除数据库?我想我可以只重命名它,然后离开它,但我宁愿完全摆脱它,这样它就不会占用空间。
发布于 2016-06-22 22:15:20
首先,你说不能丢掉桌子。但在帖子中你提到了ALTER TABLE table ENGINE=INFINIDB。
但是,DROP != ALTER,这是两码事。
因此,您可以执行以下操作:
CREATE新表格具有相同的结构,但引擎你需要。UPDATE) data from old table to the one you created.DROP created.DROP table.RENAMErename new one to old name(将旧表中的数据从旧表转换为新名称)
发布于 2016-06-22 22:30:04
结果是另一个进程(一个网站)正在使用这个数据库,并且有几个查询在SQL server中“卡住”,导致表挂起,因为数据库使用了错误的引擎,我假设这个引擎是InnoDB,因为我最初使用"CREATE table table1 AS SELECT * FROM table2“命令时没有指定引擎。我们最终设法清除了数据库并重新开始。谢谢你的帮助。
https://stackoverflow.com/questions/37970417
复制相似问题