mysql数据库使用insert语句插入中文数据报错

在mysql的命令行模式中,经过insert语句插入中文数据的时候报错,相似于下面这样:mysql

Incorrect string value: '\xE7\x8F' for column 'name' at row 1

形成这个错误一般是因为建立数据表的时候使用了不正确的编码格式,可使用以下命令查看操做的目标数据表的编码格式。sql

SHOW CREATE TABLE 表名;

经过结果就能够看到目标表的目标字段对应的编码格式,咱们只须要把该列的编码格式转化为utf8便可。数据库

ALTER TABLE 表名 MODIFY 列名 数据类型 CHARACTER SET utf8 非空约束

例如:ALTER TABLE student MODIFY name VARCHAR(20) CHARACTER SET utf8 NOT NULL

固然这只是一个临时的解决办法,更近一步的解决办法是修改数据表的编码,防止之后在使用命令添加数据列的时候,使用的还是数据表的编码。vim

ALTER TABLE 表名 DEFAULT CHARSET utf8;

而后这还不是最终的解决办法,咱们还能够经过修改数据库的编码方式来影响新建立的数据表的编码方式,进而影响数据列的编码方式。编码

ALTER DATABASE 数据库名 DEFAULT CHARACTER SET utf8;

可是这须要咱们每次在建立数据库的时候都必须指定编码方式,要想一劳永逸,咱们能够直接去修改mysql的配置文件,使用以下命令:命令行

vim /etc/mysql/mysql.cnf.d/mysqld.cnf

添加以下配置rest

[mysqld]
character-set-server=utf8

保存以后从新启动mysql服务便可,命令以下(以Ubuntu16.04为例):code

systemctl restart mysql.service

注意在设置编码格式的时候,使用以下命令查看支持的编码格式:server

SHOW VARIABLES LIKE 'char%';

相关文章
相关标签/搜索