我可以将Innodb直接转换成myisam吗?

时间:2010-05-31 02:15:33

标签: mysql innodb myisam

我想将带有innodb表的数据库转换为myisam,所有这些都是。我怎么能这样做?表中存在一些外键。

我怎样才能以最好的方式做到这一点?

1 个答案:

答案 0 :(得分:1)

当外键仍然存在时,您无法直接从InnoDB转换为MyISAM。您必须先删除约束。为此,请为每个表执行以下步骤:

  1. 问题SHOW CREATE TABLE tablename
  2. 对于输出中的每个CONSTRAINT ... FOREIGN KEY声明,您需要发出ALTER TABLE tablename DROP FOREIGN KEY x,其中xCONSTRAINTFOREIGN KEY之间显示的标识符。
  3. 再次发出SHOW CREATE TABLE tablename。外键约束可能留下了索引(因为InnoDB需要在每个外键上有一个索引,并且它不一定会因为删除了约束而删除它们)。对于您决定不再需要的每个索引,请发出ALTER TABLE tablename DROP INDEX indexname
  4. 对所有涉及约束的表执行此操作后,可以使用ALTER TABLE tablename ENGINE=MYISAM将表转换为MyISAM。