1. 程式人生 > >ERROR 1366 (HY000): Incorrect string value: 'xE8xB5xB5xE9x9BxB7' for column 'Sname' at row 1

ERROR 1366 (HY000): Incorrect string value: 'xE8xB5xB5xE9x9BxB7' for column 'Sname' at row 1

客戶端 val sage mysq 就是 我們 student time 解決方案

問題描述:

我的操作步驟:

1、創建數據庫test,語句:
create database test;
2、創建Student表:
create table Student(SId varchar(10),Sname varchar(10),Sage datetime,Ssex varchar(10));
3、插入數據:
insert into Student values(‘01‘ , ‘趙雷‘ , ‘1990-01-01‘ , ‘男‘);
insert into Student values(‘02‘ , ‘錢電‘ , ‘1990-12-21‘ , ‘男‘);
然後報錯:
>ERROR 1366 (HY000): Incorrect string value: ‘\xE8\xB5\xB5\xE9\x9B\xB7‘ for column ‘Sname‘ at row 1

就是說Sname列的數據值的字符集不正確。

解決方案:

分別查看數據庫、表、報錯列字段的字符集,錯誤就是由於三者不一致造成的,設置一致。

我們先查看一下Student數據表的字符集:
在mysql所在數據庫輸入命令行:show create table Student;
效果展示:
技術分享圖片

可以發現,字段的字符集和數據表的字符集是不一致的,原因找到了!!
我們把字段的字符集改成utf-8,與數據表一致,命令:
alter table Student change Sname Sname char(10) character set utf-8;
alter table Student change Ssex Ssex char(10) character set utf-8;

現在執行第3步的insert into 命令就成功了。

最後總結:
首先進入Mysql客戶端

查看mysql的字符集(直接粘去用):show variables where Variable_name like ‘%char%‘;
查看某一個數據庫字符集:show create database test;(註:test為數據庫)
查看某一個數據表字符集:show create table Student;(註:Student為數據表)

修改mysql的字符集:
mysql> set character_set_client=utf8;
mysql> set character_set_connection=utf8;

mysql> set character_set_database=utf8;
mysql> set character_set_results=utf8;
mysql> set character_set_server=utf8;
mysql> set character_set_system=utf8;
mysql> set collation_connection=utf8;

修改數據庫的字符集:
alter database test character set utf8;
修改數據表的字符集:
alter table Student character set utf8;
修改數據表字段的字符集:
alter table Student change Sname Sname varchar(10) character set utf-8;

ERROR 1366 (HY000): Incorrect string value: '\xE8\xB5\xB5\xE9\x9B\xB7' for column 'Sname' at row 1