Mysql:ERROR 1366 (HY000): Incorrect string value

1、查看创建数据表时的语句

d10c1ed1d7fe04371641276e2f836a7b396.jpg

创建表的时候没有指定存储引擎及编码格式,所以默认的存储引擎是InnoDB,编码格式为默认的latin1

以下是latin1的百科:

453fb438a122178a40a984d6f7f3cf4748e.jpg

 

2、具体问题:

b33a1aa179dfb032a1df2305209f26757f5.jpg

3、查找原因:

3、1 查看数据库的状态信息:

5e05c8aa39cb83cb17b2266d9696f833e2d.jpg

默认编码格式是latin1

3、2 查看该表的编码格式:

219e359c31691eeb9ab33a0545c4efc222e.jpg

3、3 根据以上信息可知是由于数据表中该字段的编码格式不支持中文

4、解决方案

    1)  将该字段的编码格式修改为utf8

    32d8f73a92c8aff429d5e82e3f997909294.jpg

    66fe806797c4c1825df245c720cf6fb425e.jpg

可以看到该字段的编码格式修改为utf8后可以成功的插入中文字符;

    2)将该字段的编码格式修改为gbk

      01badc4abfa0ed4bc16d4a792e2f72cc02d.jpg

      修改成功后插入数据

    dfdc733f8e06f284d8ece2c4ea38b9eefdc.jpg

    可以看到该字段的编码格式修改为gbk后也同样可以插入中文字符;

5、预防该类问题应该在创建数据表的时候就指定数据表的编码格式,如下图

    852e0823081777ab18bc107d2f34676af26.jpg

 

 

转载于:https://my.oschina.net/u/3643816/blog/1936523

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值