MariaDB 在一个命令中将所有表的 row_format 设置为动态

And*_*ake 2 mysql sql innodb alter-table mariadb

我想将数据库中所有表的 row_format 更改为动态。选择数据库后,我可以执行“ALTER TABLE tablenameROW_FORMAT=DYNAMIC;” 手动进行。不幸的是,大约有 100 张桌子需要更换。

如何将特定数据库中与 DYNAMIC 不同的每个表的行格式更改为动态?

我一直在尝试,但找不到有效的解决方案。

Bil*_*win 8

您不能一次 ALTER TABLE 更改多个表,但可以通过以下方式生成所有必要的 ALTER TABLE 语句:

SELECT CONCAT(
  'ALTER TABLE `', TABLE_SCHEMA, '`.`', TABLE_NAME, '` ',
  'ROW_FORMAT=DYNAMIC;'
) AS _alter
FROM INFORMATION_SCHEMA.TABLES
WHERE ENGINE='InnoDB' AND ROW_FORMAT <> 'DYNAMIC';
Run Code Online (Sandbox Code Playgroud)

捕获其输出并将其作为 SQL 脚本运行。