线上问题 - MySQL SQL state [HY000]; error code [1366]
一、问题描述
另外一个系统调用服务接口api:/xxx/create?aName=&time=&...,数据没有保存成功提示SQL state [HY000]; error code [1366]; Incorrect string value: '\xA1\xAA\xA1\xAA\xB0\xFC...' for column 'content' at row 1; 相信大家看到这个错误码大概就知道什么原因了。
而当在windows系统中去调用接口并使用相同的数据库,数据竟保存成功了但是数据库中查看数据aName值却是乱码。
为什么在不同的操作系统中,相同的操作截然不同的结果?
二、原因分析
1、查看服务接口api的编码
通过UrlDecode对接口api解码发现,接口使用方对接口api进行了GBK编码。
2、MYSQL字符集
SHOW VARIABLES LIKE 'character%';

解决问题的方法就很明了了,将接口api进行UTF-8编码就可以解决此问题。
我们知道Windows系统默认的编码格式GBK,Linux系统默认的编码格式UTF-8。
三、MYSQL字符集修改
UTF-8 ——支持几乎所有字符
GB2312 ——是简体中文的码
GBK ——支持简体中文及繁体中文中的任何一个。
MySQL对于字符集的指定可以细化到一个数据库、一张表、一列(字段),应该用什么字符集。
在create语句中通过添加character set 参数指定相应的字符集,如果不指定,则会默认使用其上一个层级的字符集。

我们可以通过修改mysql的my.cnf文件中的字符集键值,
1、在[client]字段里加入default-character-set=utf8,如下:
[client]
port = 3306
socket = /var/lib/mysql/mysql.sock
default-character-set=utf8
2、在[mysqld]字段里加入character-set-server=utf8,如下:
[mysqld]
port = 3306
socket = /var/lib/mysql/mysql.sock
character-set-server=utf8
3、在[mysql]字段里加入default-character-set=utf8,如下:
[mysql]
no-auto-rehash
default-character-set=utf8
修改完成后,service mysql restart重启mysql服务就生效。注意:[mysqld]字段与[mysql]字段是有区别的。
4、如果上面的都修改了还有乱码,在connection连接上进行编码修改
SET character_set_client = utf8;
SET character_set_results = utf8;
SET character_set_connection = utf8;
四、总结
1、对接口api制定详细使用说明 aName进行UTF-8编码,避免刚接触的使用者调到坑中。
2、系统中涉及编码 统一使用UTF-8。
由于本人经验有限,文章中难免会有错误,请浏览文章的您指正或有不同的观点共同探讨!
线上问题 - MySQL SQL state [HY000]; error code [1366]的更多相关文章
- MySQL 报错:Translating SQLException with SQL state '42000', error code '1064', message
MySQL报错详细日志 2019-09-12 16:42:29 [http-nio-80-exec-25] DEBUG [org.springframework.jdbc.support.SQLErr ...
- SQL state [72000]; error code [1461]; ORA-01461: 仅能绑定要插入 LONG 列的 LONG 值 ; nested exception is java.sql.BatchUpdateException: ORA-01461: 仅能绑定要插入 LONG 列的 LONG 值
本文转自 https://www.cnblogs.com/yingsong/p/5685790.html 原 因:某一个字段本为varchar2(1024),但是实际要插入的值超过varchar2允 ...
- hibernate查询oracle数据库表报错SQL state [null]; error code [17027]; 流已被关闭; nested exception is java.sql.SQLException: 流已被关闭
把表字段类型 long 修改为 number类型即可
- uncategorized SQLException for SQL []; SQL state [99999]; error code [17004]; 无效的列类型: 1111; nested exception is java.sql.SQLException: 无效的列类型: 1111
WHERE 的条件取值时添加上jdbcType=NUMBER这样的配置 参考[1]:https://blog.csdn.net/fyhjuyol/article/details/45483167
- MySQL中执行sql语句错误 Error Code: 1093. You can't specify target table 'car' for update in FROM clause
MySQL中执行sql语句错误 Error Code: 1093. You can't specify target table 'car' for update in FROM clause 201 ...
- Error Code: 1366. Incorrect DECIMAL value: '0' for column '' at row -1 0.266 sec;
Reference: https://stackoverflow.com/questions/35037288/incorrect-decimal-integer-value-mysql Er ...
- Mysql导入Sql文件时报Error Code: 2013 - Lost connection to MySQL server during query
MySql 有时我们导入sql文件,文件过大,导致Error Code: 2013 - Lost connection to MySQL server during query这种错误 执行以下: S ...
- mysql delete数据时报Error Code 1175
我们在学校mysql的时候,在更新或者删除数据的时候,会遇到以下错误: Error Code: . You are using safe update mode and you tried to up ...
- Mysql Update更新错误 Error Code:1175
Mysql 5.7,默认执行 update 语句时遇到错误提示: Error Code: 1175. You are using safe update mode and you tried to u ...
随机推荐
- SQL语句基础之 管理数据库,表 和 数据
MySQL中的基本sql语句 MySQL中主要有三个大的对象,第一个是数据库,有了数据库后,我们才能在数据库里面建表,因为Mysql是关系数据库,它的数据都会以记录的形式存到表里,所以第二个是表,然后 ...
- C语言中内存对齐方式
一.什么是对齐,以及为什么要对齐: 1. 现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定变量的时候经常在特定的内存地址访问, ...
- UITableView 表视图编辑
UITableViewController(表视图控制器)继承自UIViewController,自带一个tableView self.view不是UIView而是UITableView dataso ...
- Win10无法上网提示缺少一个或者多个网络协议的处理方法
netsh winsock reset Win+x 再按A 输入 netsh winsock reset
- C++ MFC实现基于RFID读写器的上位机软件
C++ MFC实现基于RFID读写器的上位机软件 该博客涉及的完整工程托管在https://github.com/Wsine/UpperMonitor,觉得好请给个Star (/▽\=) 运行和测试环 ...
- 【工作总结】LLDB调试技巧 - 篇一
备忘命令 : 命令“l”可以查看程序当前运行的位置 (lldb) l } - (void)rightBarButtonAction { 命令“bt”也能查看程序运行的调用栈 (lldb) bt * t ...
- python关于字符串的操作
#-*- coding:utf-8 -*-#Author:gxli#字符串的操作name=' zhangsan,lisi,wangwu '#分割操作name=name.split(',')print( ...
- jira的插件
jira的插件开发流程实践 怎么开头呢,由于自己比较懒,博客一直不怎么弄,以后克己一点,多传点自己遇到的问题和经历上来,供自己以后记忆,也供需要的小伙伴少走点弯路吧 最近公司项目需要竞标一个运维项 ...
- 11.2Daily Scrum
人员 任务分配完成情况 明天任务分配 王皓南 做文件的网页和数据库连接,任务编号771 实现视频上传的功能 申开亮 实现视频浏览的功能,任务编号772 实现视频浏览的功能 王宇杰 后台测试,任务编号7 ...
- 如何在Win10下设置图片的浏览方式为windows照片查看器
小编前些天刚装好了win10,一阵心奋啊,今天刚打开一个图片,却发现图片的默认打开方式是window应用商店的app, 这让我觉得特别不舒服,没有之前windows自带的照片查看器好用,后来我本想进入 ...