使用phpmyadmin将存储引擎从MyISAM更改为InnoDB-一次更改所有表

使用phpmyadmin将存储引擎从MyISAM更改为InnoDB-一次更改所有表,phpmyadmin,innodb,myisam,Phpmyadmin,Innodb,Myisam,我在mysql数据库中有大约100个表,所有表都有存储引擎:MyISAM。我想将他们的存储引擎一次全部更改为innoDB,我不想使用: 1.PHP 拉维尔 一次一张桌子 SQL查询 通过xampp或类似方式 所以我想改变:所有表存储引擎同时使用phpmyadmin接口 有什么帮助吗?两个步骤就足够了吗 1运行“根据信息选择”模式,如某些链接所示。但要让它输出100个完全格式的ALTER语句 SELECT CONCAT("ALTER TABLE ", table_name, " ENGINE=In

我在mysql数据库中有大约100个表,所有表都有存储引擎:MyISAM。我想将他们的存储引擎一次全部更改为innoDB,我不想使用:

1.PHP

拉维尔

一次一张桌子

SQL查询

通过xampp或类似方式

所以我想改变:所有表存储引擎同时使用phpmyadmin接口

有什么帮助吗?

两个步骤就足够了吗

1运行“根据信息选择”模式,如某些链接所示。但要让它输出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中。去喝杯咖啡。或者花些时间阅读有关的文章,看看你是否会遇到一些问题

真正并行地执行它们不太可能更快—您将受到I/O限制。小桌子会很快结束,而大桌子无论如何都会延长时间

输出样本:

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中这样说,您可以将所有未显式指定引擎的新表都设置为InnoDB:

[mysqld]
default_storage_engine = InnoDB

我在

上打开了一个关于此的功能请求,感谢您的回答和努力,但您的方式实际上与使用查询相同:。。。。。如果表的数量从100增加到125,那么我将不得不再次添加25个查询行…我正在寻找其他方法来解决我的问题,而不考虑表的数量。我的方法是两步,不考虑表的数量。我在答案中添加了SELECT;试着第一步来理解我的意思。在根据需要修复和之后。我从一开始就理解了您的逻辑。如果这25个新表的表号从100增加到125,我将不得不在步骤1中修改您的查询,以添加它们的名称,因此为它们修改stmt。我的意思是不考虑表的数量,我想在phpmyadmin接口中找到一些方法,比如选择所有表,然后立即将它们的存储引擎从MyISAM更改为innoDB。就像我们可以为一张桌子做一样,但要同时为所有人做。我希望我澄清了我的问题。我补充了更多的答案。如果这还不清楚,也许其他人可以解释我们中的哪一个沟通失败。我的错,到目前为止,你的答案似乎是最好的,也是唯一的一个。谢谢你的帮助和解释+1并接受。PS.在第1步中运行查询后…在结果页面中单击:选项->全文->转到,因为默认情况下,在第2步中运行查询时会显示部分文本,这将导致以后出现错误。谢谢,但到目前为止没有运气: