MySQL插入中文出现报错: ERROR 1366 (HY000): Incorrect string value: '\xD5\xC5\xC8\xFD’的解决方案
1 MySQL 5.5 版本
1.1 设置names为gbk
a 语法
SET names gbk;
b 示例sql语句
set names gbk;
c 示例sql语句运行截图
1.2 建库时需要设置字符编码集为utf8
a 语法
CREATE DATABASE IF NOT EXISTS 库名 CHARACTER SET 字符编码集;
b 示例sql语句
CREATE DATABASE IF NOT EXISTS temp CHARACTER SET utf8;
c 示例sql语句运行截图
d 对应的库结构如下所示:
1.3 需要选中刚刚创建的数据库
a 语法
USE 表名;
b 示例mysql语句
use temp;
c 示例mysql语句运行截图
1.4 建表时无需设置字符编码集,因为默认会继承所在数据库中的字符编码集
a 语法
CREATE TABLE IF NOT EXISTS 表名(
字段1 数据类型(类型长度) 约束,
字段2 VARCHAR(30)/CHAR(30) 约束,
....
字段n 数据类型(类型长度) 约束);
b 示例sql语句
CREATE TABLE IF NOT EXISTS student(
student_id int(10) PRIMARY KEY,
name VARCHAR(30) NOT NULL,
age int(10) DEFAULT 0);
c 示例sql语句运行截图
d 查看表的当前结构
1.5 插入一条中文数据
a 语法
INSERT INTO 表名 VALUES(字段1对应的值,字段2对应的值....字段n对应的值);
/*
字段1就是表格第一列,字段2就是表格的第二列,字段n就是表格的第n列
这种插入写法要求,要从第一列开始一一对应进行插入,不能少一个值也不能多一个值;
*/
b 示例sql语句
INSERT INTO student VALUES(2201,'刘备',18);
c 示例sql语句运行截图
1.6 查询表的内容,检查刚刚插入的一条中文数据是否能正常显示
a 语法
SELECT 插入中文字段 FROM 表名;
/*
虽然也可以用SELECT *进行查询,但是一般情况下不建议那么用,因为这样用的查询效率很低的
一般情况下,都是需要什么,就查询什么
*/
b 示例sql语句
SELECT name FROM student;
c 示例sql语句运行截图
2 MySQL 5.7版本
2.1 若还没有建库建表
2.1.1 建库时设置它的字符编码集为utf8
a 语法
CREATE DATABASE IF NOT EXISTS 库名 CHARACTER SET 字符编码集;
b 示例sql语句
CREATE DATABASE IF NOT EXISTS temp01 CHARACTER SET utf8;
c 示例sql语句运行截图
d 对应的库结构如下所示:
2.1.2 建表时无需设置字符编码集,因为默认会继承所在数据库中的字符编码集
a 语法
CREATE TABLE IF NOT EXISTS 表名(
字段1 数据类型(类型长度) 约束,
字段2 VARCHAR(30)/CHAR(30) 约束,
....
字段n 数据类型(类型长度) 约束);
b 示例sql语句
CREATE TABLE IF NOT EXISTS student(
student_id int(10) PRIMARY KEY,
name VARCHAR(30) NOT NULL,
age int(10) DEFAULT 0);
c 示例sql语句运行截图
d 查看表的当前结构
2.1.3 插入一条中文数据
a 语法
INSERT INTO 表名 VALUES(字段1对应的值,字段2对应的值....字段n对应的值);
/*
字段1就是表格第一列,字段2就是表格的第二列,字段n就是表格的第n列
这种插入写法要求,要从第一列开始一一对应进行插入,不能少一个值也不能多一个值;
*/
b 示例sql语句
INSERT INTO student VALUES(2201,'李四',6);
c 示例sql语句运行截图
2.1.4 查询表的内容,检查刚刚插入的一条中文数据是否能正常显示
a 语法
SELECT 插入中文字段 FROM 表名;
/*
虽然也可以用SELECT *进行查询,但是一般情况下不建议那么用,因为这样用的查询效率很低的
一般情况下,都是需要什么,就查询什么
*/
b 示例sql语句
SELECT name FROM student;
c 示例sql语句运行截图
2.2 若已经建表了
2.2.1 先查看表的当前的字符编码集
a 语法
SHOW CREATE TABLE 表名;
/*
表名就是你要查找字符编码集的表名
*/
b 示例mysql语句
SHOW CREATE TABLE student;
c 示例mysql语句运行截图
2.2.2 更改当前表的字符集
a 语法
ALTER TABLE 表名 CHARACTER SET 更改后的字符集;
b 示例sql语句
ALTER TABLE student CHARACTER SET utf8;
c 示例sql语句运行截图
d 对应的表结构如下所示:
2.2.3 更改需要插入中文的字段的字符编码集
a 语法
ALTER TABLE 表名 MODIFY COLUMN 字段 原来的字段数据类型(字段长度) CHARACTER SET utf8 约束;
b 示例sql语句
ALTER TABLE student MODIFY COLUMN name VARCHAR(30) CHARACTER SET utf8 NOT NULL;
c 示例sql语句运行截图
d 对应的表结构如下所示:
2.2.4 插入一条中文数据
a 语法
INSERT INTO 表名 VALUES(字段1对应的值,字段2对应的值....字段n对应的值);
b 示例sql语句
INSERT INTO student VALUES(2201,'张三',9);
c 示例mysql语句运行截图
2.2.5 查询表的内容,检查刚刚插入的一条中文数据是否能正常显示
a 语法
SELECT 插入中文字段 FROM 表名;
b 示例sql语句
SELECT name FROM student;
c 示例mysql语句运行截图