您的位置:首页 > 产品设计 > UI/UE

Mysql 插入中文错误:Incorrect string value: '\xE7\xA8\x8B\xE5\xBA\x8F...' for column 'course' at row 1

2018-01-23 13:38 776 查看
建表语句

areate database day_01;

use day_01;

create table my_user (

   id tinyint(4) not null auto_increment,

   account varchar(255) default null,

    password varchar(255) default null,

   primary key (id)  

)

插入语句

insert into my_user values('1','admin','admin');

insert into my_user values('2','admin','admin');

insert into my_user values('3','admin','admin');

insert into my_user values('4','admin','admin');

insert into my_user values('5','admin','admin');

insert into my_user values('6','admin','admin');

insert into my_user values('7','system','sysytem');

insert into my_user values('11','拆','巨白');

Incorrect string value: '\xE7\xA8\x8B\xE5\xBA\x8F...' for column 'course' at row 1

出现这个错误的原因是,数据库的编码格式为latin1 而我要将utf8的中文插入到数据库中。

一开始修改  修改数据库的编码

alter table my_user default character set utf8;

但是插入中文依然出现错误。

然后通过查看数据表编码

    show create table score;

发现表的编码改过来了,但是列的编码却没有改过来

   alter table my_user change account account varchar(255) character set utf8;

   alter table my_user change password password varchar(255) character set utf8;
然后插入中文,查询正常~OK
-- 创建数据库时,设置数据库的编码方式

-- CHARACTER SET:指定数据库采用的字符集,utf8不能写成utf-8

-- COLLATE:指定数据库字符集的排序规则,utf8的默认排序规则为utf8_general_ci(通过show character set查看)

drop database if EXISTS dbtest;

create database dbtest CHARACTER SET utf8 COLLATE utf8_general_ci;

-- 修改数据库编码

alter database dbtest CHARACTER SET GBK COLLATE gbk_chinese_ci;

alter database dbtest CHARACTER SET utf8 COLLATE utf8_general_ci;

-- 创建表时,设置表、字段编码

use dbtest;

drop table if exists tbtest;

create table tbtest(

id int(10) auto_increment,

user_name varchar(60) CHARACTER SET GBK COLLATE gbk_chinese_ci,

email varchar(60),

PRIMARY key(id)

)CHARACTER SET utf8 COLLATE utf8_general_ci;

-- 修改表编码

alter table tbtest character set utf8 COLLATE utf8_general_ci;

-- 修改字段编码

ALTER TABLE tbtest MODIFY email VARCHAR(60) CHARACTER SET utf8 COLLATE utf8_general_ci;

-- 查看所有的字符编码

SHOW CHARACTER SET;

-- 查看创建数据库的指令并查看数据库使用的编码

show create database dbtest;

-- 查看数据库编码:

show variables like '%char%';

-- 设置character_set_server、set character_set_client和set character_set_results

set character_set_server = utf8; -- 服务器的默认字符集。使用这个语句可以修改成功,但重启服务后会失效。根本的办法是修改配置MYSQL文件MY.INI,

character_set_server=utf8,配置到mysqld字段下。

set character_set_client = gbk; -- 来自客户端的语句的字符集。服务器使用character_set_client变量作为客户端发送的查询中使用的字符集。

set character_set_results = gbk; -- 用于向客户端返回查询结果的字符集。character_set_results变量指示服务器返回查询结果到客户端使用的字符集。包括结果数据,例如列值和结果元数据(如列名)。

-- 查看某字段使用的编码:

SELECT CHARSET(email) FROM tbtest;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐