0

我想将带有 innodb 表的 db 转换为 myisam,所有这些。我该怎么做这些?表之间存在一些外键。

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

4

1 回答 1

1

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

  1. 问题SHOW CREATE TABLE tablename
  2. 对于输出中的每个 CONSTRAINT ... FOREIGN KEY 声明,您需要发出ALTER TABLE tablename DROP FOREIGN KEY xwherex是出现在CONSTRAINT和之间的标识符FOREIGN KEY
  3. 再次发出SHOW CREATE TABLE tablename。外键约束可能留下了索引(因为 InnoDB 需要在每个外键上都有一个索引,并且它不一定会因为您删除了约束而删除它们)。对于您决定不再需要的每个索引,发出ALTER TABLE tablename DROP INDEX indexname.

对所有涉及约束的表完成此操作后,您可以使用ALTER TABLE tablename ENGINE=MYISAM.

于 2010-05-31T03:35:26.993 回答