问题描述
我想要把本地的MySQL数据库迁移到服务器的MySQL数据库里面,我采用将本地数据库转存为sql文件,再将sql文件在服务器的数据库中运行
问题就出现于我不管怎么运行,数据库中都没有表的信息,而且在运行sql文件的过程中还没有报错(我使用的是Navicat工具)
问题查找
通过Xshell连接远程服务器,我在终端界面通过命令行运行sql文件(这样可以更清晰的看到报错信息)
相关命令
1.连接mysql mysql> -u用户名 -p密码 2.连接要导入数据库名称 mysql> use 数据库名 3.导入sql文件 mysql> source sql文件的路径 举例: mysql> source /usr/local/hello.sql
报错信息如下
Unknown collation: 'utf8mb4_0900_ai_ci'
通过查询可以发现
utf8mb4_0900_ai_ci
是MySQL 8.0中引入的新排序规则,其中:
-
utf8mb4
表示它支持4字节的UTF-8字符编码,这意味着它可以处理所有的Unicode字符,包括那些需要4字节存储的字符如某些表情符号。 -
0900
是这个排序规则的标识符。 -
ai
表示"accent insensitive"(不区分重音)。 -
ci
表示"case insensitive"(不区分大小写)。
而服务器中的mysql版本为5.7.42,这就导致服务器中的mysql无法识别
问题解决
将sql文件中的utf8mb4_0900_ai_ci排序规则全部替换为utf8mb4_unicode_ci
重新运行sql文件,成功