MariaDB如何用单命令将指定库所有表row_format改为DYNAMIC
MariaDB批量修改表行格式为DYNAMIC的解决方案
方法1:数据库内生成SQL批量执行
- 首先选中目标数据库:
USE 你的数据库名称;
- 执行以下语句生成所有需要修改的ALTER命令,只会匹配当前库内行格式不为DYNAMIC的表,不会重复修改已符合要求的表:
SELECT CONCAT('ALTER TABLE `', TABLE_NAME, '` ROW_FORMAT = DYNAMIC;') AS 待执行SQL FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() AND ROW_FORMAT != 'DYNAMIC'; -- 如果你只需要修改InnoDB引擎的表,可以在WHERE条件中追加 AND ENGINE = 'InnoDB'
- 复制查询结果中的所有ALTER语句,在当前数据库下直接执行即可完成批量修改。
方法2:服务器命令行一键执行
如果你在Linux服务器上操作,可以直接通过mysql命令拼接执行,不需要手动复制SQL:
# 替换命令中的<用户名> <密码> <目标数据库名>为实际信息 mysql -u<用户名> -p'<密码>' <目标数据库名> -Nse "SELECT CONCAT('ALTER TABLE \`', TABLE_NAME, '\` ROW_FORMAT = DYNAMIC;') FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() AND ROW_FORMAT != 'DYNAMIC'" | mysql -u<用户名> -p'<密码>' <目标数据库名>
注意事项
- 操作前务必对全库进行备份,避免修改异常导致数据损坏
- 数据量较大的表执行ALTER时会锁表,建议选择业务低峰期操作
- 修改完成后可执行以下语句校验所有表的行格式是否符合要求:
SELECT TABLE_NAME, ROW_FORMAT FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE();
内容的提问来源于stack exchange,提问作者Andehake
相关产品推荐
相关产品推荐

