报错: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数
·
问题:
服务端报错: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条内容
所有评论(0)