MySQL导入sql文件,表结构导入失败

问题描述

我想要把本地的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文件,成功

你可能感兴趣的:(mysql,sql,数据库)