错误:
昨天在做数据表连表查询的时候,一直报错,错误为:
ERR: 1267:Illegal mix of collations (utf8_unicode_ci,IMPLICIT) and (utf8_general_ci,IMPLICIT) for operation '='
排查:
查询了这个错误之后,发现这很大可能(只是很大可能哦)是由两张表的编码不一样所造成的,需要修改两张表的编码格式一致。可是,建表的时候确实都是utf8编码格式的。
而且我不知道怎么查表的编码格式,于是就各种翻资料,总结了一下方法。
我的两张表确实一张是:utf8_general_ci编码。一张是:utf8_unicode_ci编码。
解决:
1.查看数据库的编码格式:
show create database 数据库名;
2.查看当前数据库的编码:
use 数据库名;
show variables like 'character_set_database';
3.修改数据库的编码:
alter database lidanyang default character set utf8 collate utf8_general_ci;
4.查看数据表的编码格式:
show create table standard_role;
5.修改数据表的编码格式:
alter table standard_user_channel default character set utf8 collate utf8_general_ci;
6.查看数据表字段的编码:
show full columns from standard_role;
7.修改数据表字段的编码:
alter table standard_role modify column name varchar(32) character set utf8 COLLATE utf8_general_ci not null;
我明明上传了很多截图的,怎么一发表就都没了。。。