mysql无法向表中插入中文:修改编码格式

报错:

  • 首次创建好table后,向表中插入汉字内容时会提示:ERROR 1366 (HY000): Incorrect string value: ‘\xE6\x8C\x82\xE6\x9C\xBA’ for column ‘name’ at row 1,表示’name’这列插入的汉字无法被编码。
原因:

mysql数据库的默认编码是latin1,首次创建表单后,可以使用下面代码查看数据库编码:

 variables like "%character%";

截图
其中默认的Latin1格式就是导致无法正确插入汉字的原因,需要将其修改为utf8,只需要在配置文件中修改对应的字段即可。

解决方案:
  • 修改配置文件:打开linux中 etc目录下的my.cnf文件,本人使用操作系统位centos,windows用户可以自行百度修改方式。
vim /etc/my.cnf

在[client]下加

default-character-set = utf8

在[mysqld]下加

character-set-server = utf8
  • 添加完成后,保存退出,重启mysql服务:systemctl restart mysqld.service
  • 然后进入mysql再次查看编码格式:show variables like “%character%”

在这里插入图片描述

  • 此时已经完成编码修改,新创建的表,默认位utf-8格式了,可以实现中文的插入。但是针对已经创建的表单,直接填入中文,仍然会报错,如果不想删表,重新创建,可以采用下列语句更换当前表的编码格式:
alter table `tablename` convert to character set utf8;

本文致谢:’程序员小黑‘提供解决方案,本人予以记录并添加报错内容,以作记录。
原文链接:程序员小黑

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值