如何将Mysql 8.0中的数据导出到5.7版本?

7 浏览
0 Comments

如何将Mysql 8.0中的数据导出到5.7版本?

我想从Mysql 8.0.11中导出备份,并恢复到5.7.27版本。但在尝试恢复时出现以下错误:

错误 1273 (HY000),位于第25行:未知排序规则:'utf8mb4_0900_ai_ci'

然后我尝试使用兼容标志,以便在旧版本的MySQL数据库上更容易进行操作。

mysqldump --compatible=mysql4 --add-drop-table -u r00t -h xxx.eu-north-1.rds.amazonaws.com -p radius_db > ~/radius.sql

但这似乎也不起作用:

mysqldump: 无法执行'/*!40100 SET @@SQL_MODE='MYSQL40' */':

变量'sql_mode'不能设置为'MYSQL40'的值 (1231)

如果有任何建议,将不胜感激。

0
0 Comments

出现的原因:MySQL 8.0和MySQL 5.7之间存在一些不兼容的差异,导致直接将数据库从MySQL 8.0导入到MySQL 5.7时可能会出现问题。

解决方法:使用以下代码将数据库从MySQL 8.0导出并导入到MySQL 5.7中。

mysqldump db > db.sql
sed -i s/utf8mb4_0900_ai_ci/utf8mb4_general_ci/g db.sql
mysql db < db.sql

其中,`db`是你的数据库名称。

0
0 Comments

问题的原因是在从Mysql 8.0导出的.dump文件中使用了utf8mb4字符集和utf8mb4_0900_ai_ci校对规则,而Mysql 5.7不支持这些字符集和校对规则。解决方法是将.dump文件中的字符集和校对规则修改为utf8和utf8_general_ci。具体操作如下:

1.备份导出的.dump文件,以防万一。

2.打开.dump文件,将以下代码中的字符集和校对规则修改为utf8和utf8_general_ci:

ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8_general_ci;

修改为:

ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;

3.重新导入修改后的.dump文件。

感谢,我最终将所有出现的utf8mb4_0900_ai_ci都修改为utf8mb4_general_ci,问题得到解决。

0