Linux上修改MySQL字符编码为UTF8
开始在linux上装好了MySQL服务,在后期的使用过程中,突然发现在插入记录时,部分字段不能为中文,报错信息如下:
mysql> insert into syudent values(1,'陶盼',21);
ERROR 1366 (HY000): Incorrect string value: '\xE9\x99\xB6\xE7\x9B\xBC' for column 'name' at row 1
经过我坚持不懈的查找资料,终于解决了该问题。下面给大家分享我的解决方法:
1、数据库中查看MySQL状态:
# 查看mysql状态
mysql> status;
mysql> quit;
2、修改配置文件:
#退出数据库
systemctl stop mysqld.service
#编辑my.cnf配置文件
vim /etc/my.cnf
[client] //如果没有[client]段,就自己添加上去
default-character-set=utf8
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
编辑好配置文件后,重启MySQL服务;
systemctl start mysqld
重启成功后,重新查询一下mysql的状态,显示如下即可:
mysql -u root -p'你的密码'
mysql> status;
这时候进入数据库即可正常插入中包含文字段数据了。
3、若是还没成功,可能是创建mysql时的配置或者刚上一步MySQL没有停止服务编辑 my.cnf 配置文件。
这里我们还需对表和字段设置字符集为utf8;
#查看一下表的创建过程
mysql> use ky15;
mysql> show create table syudent;
#将表的字符集设置为utf8
mysql> alter table 表名 character set utf8;
#将想要插入中文的字段的字符集改为utf8
mysql> alter table 表名 change name name char(20) character set utf8;
#查看表的字符集和字段的字符集
mysql> show create table syudent;
#测试,插入中文
mysql> insert into syudent values(1,'陶盼',21);
mysql> insert into syudent values(2,'王旭',21);
mysql> select * from syudent;