个人随笔
目录
Illegal mix of collations (utf8_unicode_ci,IMPLICIT) and (utf8_general_ci,IMPLICIT) for operation...
2022-07-19 11:09:58

MySQL进行连表查询时得错误

今天在做一些多表查询时,MySQL报错:

  1. [Err] 1267 - Illegal mix of collations (utf8_unicode_ci,IMPLICIT) and (utf8_general_ci,IMPLICIT) for operation '='

问题分析:表之间的编码不一致,或者是比较的字段之间的编码不一致。

解决方法:

查看表之间的编码是否一致;
  1. show create table <表名>;
如果表不一致,修改其中一个表的编码格式,使其表间编码一致
  1. alter table <表名> character set utf8 COLLATE utf8_general_ci;
表间编码一致仍出现同样错误,查询(相关查询语句的,=号两边)字段之间是否一致
  1. show full columns from <表名>;
  2. SELECT CHARSET(<字段名>) FROM <表名>;
修改字段编码
  1. ALTER TABLE <表名> MODIFY <字段名> <字段类型> CHARACTER SET utf8 COLLATE utf8_general_ci;

可能是因为旧的表不知道怎么回事用的是utf8mb4_unicode_ci,所以我新建表也要用utf8mb4_unicode_ci,但是我直接建这个表然后指定utf8mb4_unicode_ci,直接报不支持,一脸懵逼,没办法只能够先用默认值建好后再修改。

  1. CREATE TABLE `lianciword` (
  2. `level` varchar(2) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '修炼等级:1、2、3、4、5、6、7、8、9、10、11、12、13',
  3. `wordid` bigint(20) DEFAULT NULL COMMENT '单词ID',
  4. `wordname` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '单词名称',
  5. `symbol` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '音标',
  6. `translate` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '翻译',
  7. `sentence` varchar(1024) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '例句',
  8. KEY `index_lianciword` (`level`,`wordid`),
  9. KEY `index2_lianciword` (`wordname`)
  10. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci

下面是先用默认值建好后再修改,注意这里需要修改表和字段的,如果只是修改某一个可能不会成功。

  1. #drop table sentence;
  2. CREATE TABLE sentence(
  3. id BIGINT primary key auto_increment,
  4. level VARCHAR(2) COMMENT '修炼等级:1、2、3、4、5、6、7、8、9、10、11、12、13',
  5. wordid BIGINT COMMENT '单词ID',
  6. example VARCHAR(1024) COMMENT '句子',
  7. translate VARCHAR(1024) COMMENT '翻译',
  8. musicid VARCHAR(50) COMMENT '读音ID'
  9. );
  10. ALTER TABLE sentence ADD INDEX index_sentence (level,wordid);
  11. alter table sentence character set utf8mb4 COLLATE utf8mb4_unicode_ci;
  12. ALTER TABLE sentence MODIFY level VARCHAR(2) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
 256

啊!这个可能是世界上最丑的留言输入框功能~


当然,也是最丑的留言列表

有疑问发邮件到 : suibibk@qq.com 侵权立删
Copyright : 个人随笔   备案号 : 粤ICP备18099399号-2