报错:Illegal mix of collations

问题:

服务端报错:Error: ER_CANT_AGGREGATE_2COLLATIONS: Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation
在这里插入图片描述

原因

这个错误直白的翻译过来就是:2个字段的编码类型不一致造成的。

解决办法

这个时候我们首先要查看Mysql数据的字符集编码:

SHOW VARIABLES LIKE '%character%'; 

在这里插入图片描述
这样也可以查看到:

SHOW VARIABLES LIKE 'collation%';

在这里插入图片描述
这里可以很直白的看出来字符集编码不一致,所以会导致问题的出现,这里我们只需要修改不是utf_8的行即可

SET collation_server=utf8_general_ci;

//执行上述命令后,再执行查看命令:
SHOW VARIABLES LIKE '%character%'; 
//&&
SHOW VARIABLES LIKE 'collation%';

在这里插入图片描述

优化方案:

我们在创建数据库的时候直接设置好字符集编码,就可以避免出现类似编码类型不一致造成的问题:

创建数据库时:

CREATE DATABASE test_db CHARACTER SET utf8 COLLATE utf8_general_ci;

实例如下:

create database storeDB CHARACTER SET utf8 COLLATE utf8_general_ci;
use storeDB;
create table users(
  user_id int primary key auto_increment,
  userName char (40) not null unique,
  password char (40) not null,
  userPhoneNumber char(11) null
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

在这里插入图片描述

结尾

希望大家注意这个问题,提高sql语句限制条件的准确性,避免不必要的麻烦。共勉~

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值