美文网首页
MySQL - ERROR 1366 (HY000): Inco

MySQL - ERROR 1366 (HY000): Inco

作者: mm__yy | 来源:发表于2020-04-17 12:32 被阅读0次

    今天想创建两个简单的表,学习下union 和 union all的使用和区别,谁知在对只有两个字段,一个id,一个name的表插入数据的时候,却出现了如下错误:

    ERROR 1366 (HY000): Incorrect string value: '\xE5\xA7\x9A\xE5\xAE\x87' for column 'name' at row 1

    从错误信息中,大概知道应是编码的问题,但是具体是什么问题呢?如何导致的呢?

    从网上资料了解到,MySQL数据库每次重新开启就会将字符串编码改为默认latin1(拉丁文),所以会导致操作中涉及中文字符会报错。

    那么,碰到了这种问题该如何解决呢?

    首先,登录mysql后,通过命令: show variables like '%char%'; 查看下数据库的编码:

    charcater相关变量

    从上图中看到character_set_database和character_set_server两个变量的值是latin1,即拉丁文。

    这就会导致我们操作中文字符的时候出现编码错误。

    方式一:在创建数据库之前修改character_set_database和character_set_server两个变量的值

    分别敲入命令:

    set chartacter_set_database = 'utf8';

    set character_set_server = 'utf8';

    修改全局变量

    然后再次查看character相关变量的值,敲入命令:show variables like '%char%';  :

    修改成功

    从上图看到character_set_database和character_set_server两个变量的值已改为utf8。

    然后就可以创建数据库和数据表了,再无编码错误之忧:

    创建库、表、插入数据很顺利

    如果你已经创建好了数据库和数据表,在往表中插入中文字符数据的时候碰到这个问题,且不想删除表和库,该如何解决呢?下面教给你方法。(我就是这个时候碰到的ERROR 1366......)

    方式二、依次修改数据库、数据表、表中varchar类型字段的编码

    首先查看下数据库和数据表的编码,敲入命令:

    show create database isTester;     # isTester是你已经创建的数据库名

    show create table t1;    # t1是你在数据库isTester中创建的数据表名

    查看库、表的编码

    从上图看到你已创建的数据库和数据表的编码都是latin1。

    先修改数据库isTester的编码,敲入命令:alter database isTester character set 'utf8';    :

    修改库编码

    然后查看是否修改成功,敲入命令:show create database isTester;  :

    查看库编码

    接着修改数据表t1的编码,敲入命令:alter table t1 character set 'utf8';    :

    修改表编码

    然后查看是否修改成功,敲入命令:show create table t1;     :

    查看表编码

    从上图看到数据表t1的编码已改为utf8,但是name字段的编码仍是latin1,尝试插入数据还是报错,如下:

    此时插入数据还是失败

    所以还需要单独对name字段设置编码,敲入命令:alter table t1 change name name varchar(20) character set 'utf8';   :

    修改字段的编码

    查看是否修改成功,敲入命令:show create table t1;   :

    修改成功

    如上字段name的编码已经修改,和表t1的编码一致了。

    再次插入数据就可以了:

    插入数据成功

    至此,ERROR 1366 (HY000): Incorrect string value: '\xE5\xA7\x9A\xE5\xAE\x87' for column ‘xx’ 编码问题解决。

    参考资料:https://blog.csdn.net/weixin_44767769/article/details/90514605

    相关文章

      网友评论

          本文标题:MySQL - ERROR 1366 (HY000): Inco

          本文链接:https://www.haomeiwen.com/subject/dwrevhtx.html