MySQL字符集冲突导致的报错
Yii2查看日志发现报错
[error][yii\db\Exception] exception 'PDOException' with message 'SQLSTATE[HY000]: General error: 1267 Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '='' in /path/to/vendor/yiisoft/yii2/db/Command.php:837
瞬间蒙蔽了,没遇到过啊,那就百度一下吧,然后参考了一个人的帖子后,在console中输入
SHOW VARIABLES LIKE 'character_set_%';
然后再输入
SHOW VARIABLES LIKE 'collation_%';
发现结果集里面很乱,utf8和latin都有。恍然大悟。
在报错之前,刚刚添加Yii的rbac的组件模块mdm-admin,我是用了他现有的mysql表结构直接建表,但是他的这个create table
语句都没有设置charset
,原有建表的charset
和collate
是utf8,最近建的几个表默认都是latin
神马的,所以应该是这里冲突了。
重新建表,create table
语句加上
CHARSET=utf8 COLLATE=utf8_unicode_ci;
完美解决。