Error Code: 1366. Incorrect string value: '\xE7\x8E\x8B\xE9\xB9\x8F... 数据库编码方式的问题

Error Code: 1366. Incorrect string value: ‘\xE7\x8E\x8B\xE9\xB9\x8F…’ for column ‘user_name’ at row 1

在使用MySQL创建数据库时,写入下面DDL语言:

CREATE DATABASE IF NOT EXISTS qq;

USE qq;

/*用户表*/
create table if not exists user(
	user_id varchar(80) not null,     /*用户id*/
    user_pwd varchar(25) not null,     /*用户密码*/
    user_name varchar(80) not null,     /*用户名字*/
    user_icon varchar(100) not null,      /*用户图标*/
primary key(user_id));

/*用户好友表Id1和Id2互为好友*/
create table if not exists friend(
	user_id1 varchar(80) not null,     /*用户1id*/
    user_id2 varchar(80) not null,     /*用户2id*/
primary key(user_id1,user_id2));

use qq;

INSERT INTO user VALUES('wpz','123','小王','21');

INSERT INTO user VALUES('123','123','小刘','21');

在执行SQL语言时,出现下面错误:
Error Code: 1366. Incorrect string value: ‘\xE7\x8E\x8B\xE9\xB9\x8F…’ for column ‘user_name’ at row 1
后面检查发现应该先执行

alter table user convert to character set utf8;

更改数据表的编码方式。

为什么呢?

在创建数据库时没有指定编码方式,在表中插入中文时会报错,这时需要修改数据库编码或者表的编码方式。

创建数据库时指定编码格式:

create database xxx character set utf8;  /*xxx为数据库名*/

创建数据表时指定编码格式:

create table xxx(
    user_id varchar(80) not null, 
    user_pwd varchar(25) not null) default charset = utf8;  /*xxx为数据表名*/

修改数据库的编码格式:

alter database xxx character set utf8;     /*xxx为数据库名*/

修改数据表的编码格式:

alter table xxx convert to character set utf8;     /*xxx为数据库名*/

你可能感兴趣的:(MySQL)