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

Posted

技术标签:

【中文标题】MariaDB 在一个命令中将所有表的 row_format 设置为动态【英文标题】:MariaDB set row_format to dynamic to all tables in one command 【发布时间】:2022-01-01 00:22:46 【问题描述】:

我想在我的数据库中的所有表上将 row_format 更改为动态。选择数据库后,我可以执行“ALTER TABLE tablename ROW_FORMAT=DYNAMIC;”手动完成。不幸的是,大约有 100 个表需要更改。

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

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

【问题讨论】:

写一个循环? 【参考方案1】:

您一次不能 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';

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

【讨论】:

以上是关于MariaDB 在一个命令中将所有表的 row_format 设置为动态的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 MySQL/MariaDB 查询数据库所有表的所有列?

如何在 mariadb 列存储中将“仅模式同步”指定为系统变量

MariaDB 表的基本操作

binlog2sql与MariaDB flashback

如何在 MySQL/MariaDB 中将 LONGTEXT 字段作为 JSON 返回

如何使用复制命令在 postgres 中将数据从一个表复制到另一个表