使用mariadb-dump备份远程MySQL5.6数据库报错:字段'generation_expression'不存在
解决mariadb-dump备份MySQL 5.6时出现Unknown column 'generation_expression'错误
问题重现
一直通过CLI使用mariadb-dump备份远程MySQL数据库,突然触发以下错误:
mysqldump: Couldn't execute
'select column_name, extra, generation_expression, data_type
from information_schema.columns
where table_schema=database()
and table_name=''':
Unknown column 'generation_expression' in 'field list' (1054)
环境信息:
- 本地
mariadb-dump版本:Ver 10.19 Distrib 10.11.2-MariaDB(Linux x86_64) - 远程数据库版本:MySQL 5.6
- 确认远程服务器
information_schema.columns表无generation_expression字段(该字段为MySQL 5.7及以上版本引入) - 已重装本地数据库并清理数据,问题仍存在
解决方案
方法1:添加兼容低版本参数
执行mariadb-dump时带上--compatible=mysql56参数,强制工具适配MySQL 5.6的系统表结构:
mariadb-dump --compatible=mysql56 -h <远程主机地址> -u <用户名> -p <目标数据库名> > backup.sql
方法2:使用匹配版本的dump工具
若方法1无效,可安装MySQL 5.6对应的mysqldump工具,用它来完成备份操作,从根源规避版本不兼容导致的系统表查询差异。
原因说明
高版本MariaDB的mariadb-dump默认会查询generation_expression字段,但该字段是MySQL 5.7之后才加入information_schema.columns的。当高版本工具连接低版本MySQL 5.6时,就会因目标数据库无此字段触发报错。添加兼容参数后,工具会自动调整查询逻辑,跳过对该字段的读取,从而适配低版本数据库。
内容的提问来源于stack exchange,提问作者Robbin
相关产品推荐
相关产品推荐

