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%';
我们可以看到*’database’数据库是latin1编码的,而SQL文件的编码格式在记事本的下边框就可以看到,是utf8
现在有两个办法1.将要导入的 SQL文件的编码与数据库相统一 2.改变数据库的字符集。
通过右键数据库ry,我更改了数据库属性,将原本的字符集latin1…改为utf-8,SQL导入成功
要注意的是,使用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)后未能成功!
还有中文乱码。
后来搞明白了,latin1不支持中文等字符,即使强转成utf8也会报错。通过命令把数据库的latin1转为utf8,目前来看这是最好的办法。。。
字符集匹配了应该就可以成功运行,但确实不行,
参考文章:
MySQL查看和修改数据库字符集的方法_修改数据库字符集sql-CSDN博客
mysql运行sql文件时报1366错误_mob64ca12d2a342的技术博客_51CTO博客
附:如何查看MySQL版本?命令行输入mysql -V(其中只有V要求大写,甚至可以写作mysql -V6666)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)