MySQL-MySQL插入中文1366报错

今天在日常维护中遇到几个个小问题,比较有意思

1.  在数据迁移后,重新数据失败,发现报错

ERROR 1136 (21S01): 。。。。。

2.  在接口调用时,发现查询效率极其低下,估计是索引失效

这里新建一个表复现一下

目录

1. 插入中文报错1366

2. 索引失效的小问题

总结:


1. 插入中文报错1366

MySQL-MySQL插入中文1366报错_第1张图片MySQL-MySQL插入中文1366报错_第2张图片

新建一个test数据库以及一个emp表

create table emp(
   
   
     
     
     
     
id int unique primary key,
  • name varchar( 10),
  • age int,
  • gender char( 1)
  • )
  • 依次展开故事

    此时insert插入数据

     insert into emp values(1,'张三',12,'男'),(2,'李四',18,'女');
      
      
          
          
          
          

    会发现报一个错

    1366,这个错误就是在mysql表中有一个或者多个字段的编码不是utf-8

    解决:

    通过show create table emp 查看,发现数据表中的内容为latin1字符集

    MySQL-MySQL插入中文1366报错_第3张图片

    于是,给这张表重新设置字符集

    alter table emp default character set utf8;
      
      
          
          
          
          

     

    然后,重新去插入数据

    依然报错,查看建表语句,发现字符集确实是utf8

    MySQL-MySQL插入中文1366报错_第4张图片

    是因为表设置了,但是行依然是latin1字符集

    给行也设置

     alter table emp change gender gender varchar(20) character set utf8;
      
      
          
          
          
          

     此时再去插入就OK了

    MySQL-MySQL插入中文1366报错_第5张图片

你可能感兴趣的:(MySQL,mysql,数据库)