【ERROR 1366 (HY000): Incorrect string value】(关键词:字符集/character set)

时间:2022-10-14 13:54:35
mysql> INSERT INTO work_info VALUES(1,'张三','M',18,'北京市海淀区','1234567');

报错:

ERROR 1366 (HY000): Incorrect string value: '\xE5\xBC\xA0\xE4\xB8\x89' for column 'name' at row 1

错误原因:

    是字段'name'的字符集(character set)的问题。

先看看当前的字符集:

mysql> SHOW VARIABLES LIKE 'character%';
+--------------------------+----------------------------+

| Variable_name | Value |
+--------------------------+----------------------------+

| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+

8 rows in set (0.01 sec)

在解决这个问题之前,需要明确:

    字符集分这几个级别:
数据库级;
表级;
字段级。

使用如下语句查看work_info这张表的各字段的字符集

SHOW CREATE TABLE work_info \G;

‘name’、’address’这两个字段的字符集需要修改,修改语句的例子如下:

ALTER TABLE tbl_name CONVERT TO CHARACTER SET character_name [COLLATE ...]
如:ALTER TABLE logtest CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;

今天耗费大半天寻找问题的解决办法,不详细写下去了。

补充一点:
参考一些博文,解决办法是修改my.cnf配置文件,但是修改了之后会引发无法启动mysql服务的问题,目前没有找到解决办法。

    参考文献:

1.mysql修改表、字段、库的字符集(转)
2.mysql修改表、字段、库的字符集
3.修改及查看mysql数据库的字符集
1.MYSQL 字符集问题
2.修改mysql默认字符集的方法
2.如何修改MySQL字符集
3.修改mysql默认字符集的方法
4.mysql修改表、字段、库的字符集
5.Linux下MySQL配置文件my.ini位置
6.ERROR 1366 (HY000): Incorrect string value: ‘\xE5\xB8\x82’ for column ‘address’ at row 1
7.查看修改mysql编码方式
8.MySql修改数据库编码为UTF8
9.MySQL相关的中文编码错误解决
10.(原创)Linux下MySQL 5.5/5.6的修改字符集编码为UTF8(彻底解决中文乱码问题)
11.MySQL / MariaDB: Set Character Set and Collation to UTF8
12.UTF-8 in MySQL — Solving UTF-8 Issues in MySQL
13.Linux学习之CentOS(二十)–CentOS6.4下修改MySQL编码方法
14.Linux下MySQL 5.6的修改字符集编码为UTF8(彻底解决中文乱码问题)
15.Linux学习笔记之——ubuntu中mysql修改编码utf8
16.(总结)CentOS下安装官方RPM包的MySQL后找不到my.cnf
17.使用brew安装mysql后找不到my.cnf文件
18.Linux mysql安装无法启动 /etc下无mysql配置文件,mysql 无法启动,/var/run/mysqld/mysqld.sock找不到
19.【MySQL】查看MySQL配置文件路径及相关配置
20.为什么我在mysql的my.cnf下找不到bind-address?
21.Linux下Mysql找不到my.cnf配置文件
22.How to set character_set_database and collation_database to utf8 in my.ini?
23.如何将character_set_database latin1 改为 gbk(转)
24.MySQL编码设置方法 MySQL编码为utf8设置方法