我在 mysql 数据库中有大约 100 个表,所有表都有存储引擎:MyISAM。我想立即将他们的存储引擎全部更改为 innoDB,但我不想使用:
1.PHP ( How to convert all tables from MyISAM into InnoDB?
Laravel( Laravel & InnoDB )
一次一个表。( how to change storage engine of database in phpmyadmin? )
SQL 查询 .( How to change table storage engine from MyISAM to InnoDB )
通过 xampp 或类似方式。 ( How to set the default storage engine to InnoDB in XAMPP )
所以我想改变:ALL TABLE STORAGE ENGINE AT ONCE 和using phpmyadmin interface.
有什么帮助吗?
最佳答案
2 个步骤是否足够?
(1) 针对 information_schema
运行 SELECT
,如其中一些链接所示。但是让它输出 100 个完整的 ALTER
语句。
SELECT CONCAT("ALTER TABLE ", table_name, " ENGINE=InnoDB;
")
FROM information_schema.tables
WHERE engine='MyISAM'
AND table_schema='MyDatabase'
AND ...;
(2) 将这 100 行复制并粘贴到 phpadmin 中。去喝杯咖啡。或者花时间阅读 gotchas in converting看看您是否会遇到一些问题。
真正并行执行它们不太可能更快——您将受到 I/O 限制。小 table 会很快完成,大 table 无论如何都可以延长时间。
输出样本:
SELECT CONCAT("ALTER TABLE ", table_name, " ENGINE=InnoDB;
")
FROM information_schema.tables
WHERE engine='MyISAM'
AND table_schema='test';
产生类似的东西:
ALTER TABLE 07 ENGINE=InnoDB;\n
ALTER TABLE 597377b ENGINE=InnoDB;\n
ALTER TABLE adjprice ENGINE=InnoDB;\n
ALTER TABLE big ENGINE=InnoDB;\n
ALTER TABLE bigv ENGINE=InnoDB;\n
ALTER TABLE blobid ENGINE=InnoDB;\n
ALTER TABLE charlatin1 ENGINE=InnoDB;\n
ALTER TABLE collorder ENGINE=InnoDB;\n
ALTER TABLE collorder2 ENGINE=InnoDB;\n
ALTER TABLE countries ENGINE=InnoDB;\n
ALTER TABLE d1 ENGINE=InnoDB;\n
然后将生成的许多行粘贴回工具中。无需手动输入名称。
如果您首先转换 100 个表,则当您再次运行查询时,它们将不会被包括在内。仅包括新的 25 个。
不,您不能“自动”将任何新表更改为不同的引擎。然而……
通过在 my.cnf
中这样说,您可以让所有未明确指定 ENGINE
的新表 成为 InnoDB:
[mysqld]
default_storage_engine = InnoDB
关于phpmyadmin - 将存储引擎从 MyISAM 更改为 InnoDB - 一次所有表 - 使用 phpmyadmin,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41631724/