首页 > cms建站系统 > 帝国cms

搜索时出现Illegal mix of collations for operation 'like' 错误

发布时间:2020-11-30 11:33

站长在给一个帝国CMS网站搬家时发现后台信息搜索出错,提示如下错误 


Illegal mix of collations for operation 'like'

select count(*) as total from ***_ecms_live where (title like '%高级%' or sskehu like '%高级%' or ssgs like '%高级%' or domain like '%高级%'


这是由于升级mysql5.5才会出现的错误,


只需打开 /e/admin/LisNews.php


查找:


$sr['searchallfield'].=$or.$r1[1]." like '%[!--key--]%'";

改为


$sr['searchallfield'].=$or.$r1[1]." like binary '%[!--key--]%'";

即可



错误分析

产生错误的原因:

解决方法

根本的解决方法是通过DDL修改表结构,使其字段类型一致。

但是,有时候可能因为条件限制,不能进行DDL操作。

下面提供一种不修改表结构的解决方法:通过cast内置函数转换类型(方法不唯一,比方说convert函数也可以)。

# 无需在意逻辑select *from article As ar left join author AS au on ar.author_id = au.idwhere CAST(ar.author AS char) <> CAST(au.name AS char);1234

关于cast函数的语法

CAST(field AS type)1

其中,可选的type如下:


标签:[!--infotagslink--]

您可能感兴趣的文章: