我之前没有特别遇到过这个问题,但是
SQLSTATE[HY000]错误:1267 非法字符集混合(latin1_swedish_ci,IMPLICIT)和(utf8_unicode_ci,COERCIBLE),用于操作“=” (SQL:
select `id` from `data` where `thing` = خ@gmail.com limit 1
我非常肯定,خ@gmail.com不是一个有效的电子邮件地址,但我不太确定为什么 Laravel 的 DB 函数会将其传递给我的服务器。它不应该知道它正在使用的数据库的字符集和排序规则吗?正确的解决方案是更改字符集和排序规则为 UTF-8,这样就不会在我的 MySQL 服务器上引起常规错误了。
有没有任何关于什么是正确的字符集和排序规则的共识呢?
where 'thing' = 'خ@gmail.com'
- Mark Overtonutf8mb4
。 - Rain