Mysql插入中文时错误:ERROR 1366 (HY000): Incorrect string value: '\xE6\x9D\x8E\xE5\x8B\x87' for column

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

前提:
创建的表如下:

创建学生表Student
CREATE TABLE Student          
(Sno   CHAR(10) PRIMARY KEY,    
Sname  CHAR(20) UNIQUE,
Ssex    CHAR(2),
Sage   SMALLINT,
Sdept  CHAR(20)); 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

**插入中文时错误提示:
中文:**错误1366(hy000):第1行“sname”列的字符串值不正确:\xe6\x9d\x8e\xe5\x8b\x87

解释:
已建立的表无法插入中文字符串,原因是因为数据表中的内容为latin1字符集,由下图的的资料可知,latin1字符集为8bit,这说明它是不能表示中文的,故而当然会报改错:
解决办法:
1、 首先通过语句查看: show create table Student;
2、 发现如下所示:
示图
3、 然后通过语句修改数据表编码:alter table Student default character set utf8;
4、 但是修改后仍然出现错误。
5、 我们再次查看编码:show create table Student ;
6、 发现如下所示:
在这里插入图片描述

7、 注意 Student 的编码仍然为 latin1 ,虽然此时表的编码已经是 utf8 , 但是不知道为什么 列的编码没有更改过来
8、 下面就是更改列的编码即可
alter table Student change Sname Sname varchar(20) character set utf8;


小结:


查看数据表的编码:

 show create table Student; 

 
 
  • 1

修改表的编码方式:

 alter table Student default character set utf8;

该命令用于将表Student的编码方式改为utf8;

  • 1
  • 2
  • 3

修改字段的编码方式:

 alter table Student change Sname Sname varchar(20) character set utf8;
 (注意看截图)
该命令用于将表Student中Sname字段的编码方式改为utf8

 
 
  • 1
  • 2
  • 3

改其他项同理

                                </div>
            <link href="https://csdnimg.cn/release/phoenix/mdeditor/markdown_views-e44c3c0e64.css" rel="stylesheet">
                </div>
</article>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值