MySQL在表中插入中文时报错:ERROR 1366 (HY000)/ Incorrect string value/ '\xE6\x9D\x8E\xE5\x8B\x87' for column 'S

一、错误提示

ERROR 1366 (HY000): Incorrect string value: ‘\xE6\x9D\x8E\xE5\x8B\x87’ for column ‘Sname’ at row 1

二、过程描述

1.创建如下表
#建立一个学生表 
Create TABLE Student
	(Sno CHAR(9) PRIMARY KEY not null,/*列级完整性约束,Sno是主码*/
   Sname CHAR(20) not null,
   Ssex CHAR(2),
   Sage SMALLINT,
   Sdept CHAR(20)
  );
2.插入如下元组
#向学生表插入数据
insert 
into Student(Sno,Sname,Ssex,Sage,Sdept)
values('201215121','李勇','男',20,'CS');
3.报错如下
ERROR 1366 (HY000): Incorrect string value: '\xE6\x9D\x8E\xE5\x8B\x87' for column 'Sname' at row 1
  • 报错释义:第1行“sname”列的字符串值\xE6\x9D\x8E\xE5\x8B\x87不正确
  • 报错原因:原因是因为已建立的数据表,默认的字符集为latin1,latin1字符集为8bit,不能表示中文,故而报错。

三、解决

1.查看表建立结构
 show create table Student;
  • 显示如下
    在这里插入图片描述

  • 由最后一行的描述得知,默认的表字符集编码为latin1

2.修改表字符集编码为utf8
alter table Student default character set utf8;
  • 再次查看表建立结构

     show create table Student;
    
  • 显示如下

    在这里插入图片描述

  • 由最后一行的描述得知,默认的表字符集编码已经改为utf8

  • 但是当再次向表中插入元组数据时,仍然报错

    ERROR 1366 (HY000): Incorrect string value: '\xE6\x9D\x8E\xE5\x8B\x87' for column 'Sname' at row 1
    
  • 原因是上述知识修改了表的字符集编码为utf8,但是属性列的字符集编码仍为latin1(如上图红色矩形框所示)

3.修改属性列的字符集编码为utf8
alter table Student change Sname Sname varchar(20) character set utf8;
  • 再次查看表建立结构

  • 显示如下

    在这里插入图片描述

  • 由最后一行的描述得知,属性列Sname的字符集编码已经改为默认的utf8

  • 当再次向表中插入数据时,报错改成了属性列Ssex,说明刚刚改的属性列Sname的字符集编码已经通过

    ERROR 1366 (HY000): Incorrect string value: '\xE7\x94\xB7' for column 'Ssex' at row 1
    
  • 接着修改属性列Ssex的字符集编码为utf8即可

    alter table Student change Ssex Ssex varchar(20) character set utf8;
    
  • 再次向表中插入元组数据时,即可正常插入

    在这里插入图片描述

  • 如果由于其他属性列的字符集编码方式仍为latin1,导致仍然报错,那么如上方法,继续修改为utf8即可

4.如果数据表中有汉字,在建立表时,就应该指定字符集的编码方式为utf8
#建立一个学生表 
Create TABLE Student
	(Sno CHAR(9) PRIMARY KEY not null,		/*列级完整性约束,Sno是主码*/
   Sname CHAR(20) not null,
   Ssex CHAR(2),
   Sage SMALLINT,
   Sdept CHAR(20)
  )ENGINE=InnoDB DEFAULT CHARSET=utf8;
  • 在建表时指定字符集的编码方式为utf8后,后续即可正常插入元组数据

猜你喜欢

转载自blog.csdn.net/szw_yx/article/details/104695519