如何从 Mysql 8.0 转储到 5.7?
Posted
技术标签:
【中文标题】如何从 Mysql 8.0 转储到 5.7?【英文标题】:How to take a dump from Mysql 8.0 into 5.7? 【发布时间】:2019-12-24 02:07:36 【问题描述】:我想从 mysql 8.0.11 中进行转储并将其恢复到 5.7.27。
当我尝试恢复它时,我得到了错误:
ERROR 1273 (HY000) at line 25: Unknown collation: 'utf8mb4_0900_ai_ci'
然后我尝试使用 compatible 标志使其在较旧的 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)
任何建议将不胜感激。
【问题讨论】:
赞成这个真棒标题,我爱我在 SO 上的一点意外幽默 :) 这能回答你的问题吗? MySQL Import error - Unknown collation: 'utf8mb4_unicode_520ci_' 【参考方案1】:简单地说,用作 DEFAULT "utf8" 和 COLLATE "utf8_general_ci"。
解决问题的一种方法是更改您的 import .sql-Files from
“utf8mb4”到“utf8” 和“utf8mb4_0900_ai_ci”(或其他)到“utf8_general_ci”提示:不要忘记备份文件以防万一;-)
转到您的 (.sql) 导入文件并进行这些更改。 来自:
ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8_general_ci;
到:
ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;
重新导入。
【讨论】:
谢谢,我最终将所有出现的utf8mb4_0900_ai_ci
更改为 utf8mb4_general_ci
并且成功了。【参考方案2】:
您可以使用下面的代码将数据库从 mysql 8.x 移动到 mysql 5.x。
mysqldump db > db.sql
sed -i s/utf8mb4_0900_ai_ci/utf8mb4_general_ci/g db.sql
mysql db < db.sql
db 是您的数据库名称
【讨论】:
以上是关于如何从 Mysql 8.0 转储到 5.7?的主要内容,如果未能解决你的问题,请参考以下文章