MySQL生成存储/虚拟列使用Adminer导入导出报错的解决方案问询
解决Adminer导出带生成列的MySQL库导入报错问题
方案1:调整Adminer导出配置(推荐)
- Adminer 4.7.0及以上版本已原生支持跳过生成列导出:
- 进入导出页面,选择导出格式为SQL
- 在「数据导出」设置区域,勾选不导出生成列选项
- 执行导出即可,生成的SQL文件INSERT语句自动剔除所有生成列字段,直接导入无报错
- 如果你用的是低于4.7.0的旧版本Adminer,直接升级到最新稳定版即可使用该功能。
方案2:使用官方mysqldump工具导出
MySQL官方自带的mysqldump工具从5.7.8版本开始,默认导出时自动排除所有生成列,无需额外配置,导出命令示例:
mysqldump -u 你的数据库用户名 -p 目标数据库名 > 导出的sql文件路径.sql
执行命令后输入数据库密码即可完成导出,导出文件可直接导入。
方案3:已导出大文件的批量处理方案
如果你已经导出了超大规模的SQL文件,不方便重新导出,可以用命令行工具批量处理,不需要手动修改:
比如你所有生成列的名称为generated_field、col2、col3,可以用sed命令批量删除INSERT语句中的对应字段,示例命令(Linux/macOS环境):
# 替换示例中的生成列名为你实际的生成列名称即可 sed -i 's/`, `generated_field`//g;s/`, `col2`//g;s/`, `col3`//g' 你的SQL文件路径.sql
处理后的文件即可正常导入。
内容的提问来源于stack exchange,提问作者Karthikeyan Ganesan
相关产品推荐
相关产品推荐

