Error Code: 1366. Incorrect string value

问题描述:在mysql中向表格插入中文时报错

原因分析:安装mysql时如果不进行配置,系统默认使用latin1字符集,而不是使用utf8,latin1字符集不支持中文。

此时执行sql代码:

show variables like 'character%';

会发现character_set_database和character_set_server的值为lantin1(或许有更多的值为latin1)。

解决思路:

1.配置文件使mysql默认使用utf8字符集,若配置成功,则此后在新建的表中即可以使用中文。

配置方法:在window和linux中,以及在linux的不同的版本中,所要修改的配置文件可能会不同,我此时用的是ubantu18.04.1,以此为例

1)打开配置文件(要用root权限才能修改):

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

2)在[mysqld_safe]和[mysqld]下添加如下代码(设置默认字符集为utf8):

[mysqld_safe]
default-character-set = utf8


[mysqld]
character-set-server = utf8

3)重启mysql

service mysql restart

4)再次执行sql代码:

show variables like 'character%';

会发现character_set_database和character_set_server的值已经变为utf8(或许有更多的值变为utf8)。

 

2.当我们遇到此问题时,往往是已经把表建好了,即使执行完第1步的更改,会发现依然不能往表中插入中文。因为建好的表已经有默认的字符集,即latin1。可以用sql语句

show create table <table_name>;

查看该表的详细信息。此时会发现表的默认字符集为latin1(DEFAULT CHARSET=latin1),或许在一些属性中也会默认使用latin1字符集。只要把表的字符集和所有属性的字符集更改为utf8即可,sql代码

alter table <table_name> convert to character set utf8;

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值