记一次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,原有建表的charsetcollate是utf8,最近建的几个表默认都是latin神马的,所以应该是这里冲突了。

重新建表,create table语句加上

CHARSET=utf8 COLLATE=utf8_unicode_ci;

完美解决。

参考

  1. http://www.111cn.net/database/mysql/41922.htm

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值