mysql导入sql文件1366错误

用到工具:
java 1.8.0_201
apache-maven-3.6.3
Navicat 11
Mysql 5.7.44
使用Navicat,在新建库ry里运行ry_20240601.sql文件时,运行失败。错误信息:[Err] 1366 - Incorrect string value: '\xE8\x8B\xA5\xE4\xBE


[11:01]
1366表示输入的字符串无法被正确,一般是字符编码不匹配。此错误常出现在运行某个SQL文件的时候。
登录mysql:
Win+X打开power shell
Mysql -u root -p;
或者打开命令行
Mysql -u root -p
或者在Navicat新建查询
检查当前数据库的字符集
SHOW VARIABLES LIKE '%character%';

image
我们可以看到*’database’数据库是latin1编码的,而SQL文件的编码格式在记事本的下边框就可以看到,是utf8
现在有两个办法1.将要导入的 SQL文件的编码与数据库相统一 2.改变数据库的字符集。
通过右键数据库ry,我更改了数据库属性,将原本的字符集latin1…改为utf-8,SQL导入成功

image
要注意的是,使用Navicat的这个更改是一次性的,再导入一个字符集不匹配的SQL仍然需要改一次属性
使用指令alter database ry default character set utf8;将ry数据库默认编码设置为了utf8,并且Latin1 charset (iso-8859) is 100% compatible to be stored in a utf8 datastore,与Navicat操作不同,这是永久性的。
不管怎么样,说明确实是SQL文件与数据库字符集不匹配的原因。那如果想要改变SQL文件的话呢?需要改变其字符集。
然而我用Notepade++将其改成ISO 8859 1(也就是latin1)后未能成功!
还有中文乱码。

image

后来搞明白了,latin1不支持中文等字符,即使强转成utf8也会报错。通过命令把数据库的latin1转为utf8,目前来看这是最好的办法。。。

字符集匹配了应该就可以成功运行,但确实不行,

参考文章:

MySQL查看和修改数据库字符集的方法_修改数据库字符集sql-CSDN博客
mysql运行sql文件时报1366错误_mob64ca12d2a342的技术博客_51CTO博客

附:如何查看MySQL版本?命令行输入mysql -V(其中只有V要求大写,甚至可以写作mysql -V6666)

posted on 2025-03-03 17:50  VoidHan21  阅读(63)  评论(0)    收藏  举报