我收到以下错误消息:
Uncaught exception 'PDOException' with message 'SQLSTATE[HY000]: General er
ror: 1267 Illegal mix of collations (utf8_unicode_ci,IMPLICIT) and (utf8_general_ci,IMPLICIT) for operation '=''
查询如下所示:
SELECT
name,
address,
email,
@userid:=(user) AS user_id,
(select count(id) from messages where user_id=@userid and thread_start='1')
as counter,
(select group_concat(search) from saved_search where user_id=@userid ) as area
FROM
useraccount
WHERE
flag = '1'
通过添加COLLATION
解决了这个问题SELECT
name,
address,
email,
@userid:=(user) AS user_id,
(select count(id) from messages where user_id=@userid COLLATE utf8_unicode_ci and thread_start='1')
as counter,
(select group_concat(search) from saved_search where user_id=@userid COLLATE utf8_unicode_ci ) as area
FROM
useraccount
WHERE
flag = '1'
我的问题是,当我查看数据库时,当用户字段和user_id字段都具有相同的排序规则时,为什么要指定必要的排序规则呢?
只是为了让它变得更加混乱,在MySQL工作台中,查询起作用,但在PHP / PDO中它出错了。