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为数据库名*/