场景:因需求用到docker在arm平台上拉取mysql.没有找到5.7的版本包,直接拉取8.在数据导入时报错。因5中用的字符集为utf8而8开始使用的是utf8mb4,故做了如下修改:
1.在my.cnf 文件中添加
[mysqld]
character-set-server=utf8mb4
innodb_file_format=Barracuda #此行是解决遇到的文件类型问题,可以不添加
innodb_file_per_table=1 #此行是解决遇到的文件类型问题,可以不添加
[client]
default-character-set=utf8mb4
2.编辑导出的数据库脚本,把5中的utf8替换掉
/*!40101 SET NAMES utf8mb4 */; #此行为最前面的注释行必须修改,不修改导入会报错。
sed -i 's/utf8_bin/utf8mb4_bin/g' databasename.sql
sed -i 's/CHARSET=utf8/CHARSET=utf8mb4/g' databasename.sql
sed -i 's/utf8_unicode_ci/utf8mb4_0900_ai_ci/g' databasename.sql
注:可以用grep把脚本中关于utf8的内容提取出来,方便查看替换。
阅读(4355) | 评论(0) | 转发(0) |