目标:把指定的mysql数据库(本例中名字为ai_platform)从源机器,迁移至目标机器

背景:源机器系统为ubuntu, 目标机器系统为centos

我全程都是在源机器上操作的

  • 生成导出文件:
mysqldump -u [username] ai_platform > backup.sql

用这个命令可以也可以导出远程机器上的数据库:

mysqldump -h [remote_host] -P [remote_port] -u [username] -p [database_name] > backup.sql
  • 导入:
sudo mysql -h [targetIp] -P [targetPort] -u [root] -p[psw] ai_platform < backup.sql

但是我在导入这步报错了:ERROR 1273 (HY000) at line 25: Unknown collation: ‘utf8mb4_0900_ai_ci’
我把backup.sql打开一看,系统把建表语句全都给我加上了COLLATE=utf8mb4_0900_ai_ci,而这句在我自己之前建表时是没有的。而两边数据库估计版本有差异,这方面有不兼容。
在这里插入图片描述

  • 所以我用sed命令把backup.sql文件里的这句COLLATE=utf8mb4_0900_ai_ci全都删了:
sed -i 's/COLLATE=utf8mb4_0900_ai_ci//g' backup.sql

最后再执行上文的导出命令,成功。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐