【问题标题】:Illegal mix of collations mysql error?非法混合排序规则mysql错误?
【发布时间】:2012-08-30 05:14:38
【问题描述】:

我正在使用geoloaction 查找返回 xml 数据的用户的当前位置

<geonames>
    <geoname>
        <toponymName>Gulbahar</toponymName>
        <name>Golīmar</name>
        <lat>24.8922</lat>
        <lng>67.0287</lng>
        <geonameId>1346867</geonameId>
        <countryCode>PK</countryCode>
        <countryName>Pakistan</countryName>
        <fcl>P</fcl>
        <fcode>PPLX</fcode>
        <distance>0.14608</distance>
    </geoname>
</geonames>

现在我想要&lt;name&gt;Golīmar&lt;/name&gt;,它有一个特殊字符,基于该名称,我必须运行查询以获取除此之外的更多结果,但它会产生某种排序错误

SELECT DISTINCT country
FROM   propertydetails
WHERE  country NOT IN ( "Golīmar" )

错误:排序规则的非法混合 (latin1_swedish_ci,IMPLICIT) AND (utf8_general_ci,COERCIBLE) FOR 操作

我见过很多堆栈位置,但找不到解决方法

【问题讨论】:

  • 检查表的排序规则:SHOW CREATE TABLE propertydetails;然后你可能不得不将排序规则从 latin1 切换到 utf-8,或者数据库连接本身。让我知道你的表格编码是什么。
  • 显示创建表属性详细信息;此命令显示表名没有其他详细信息

标签: php mysql database mysqli


【解决方案1】:

您的表排序规则和连接排序规则匹配不够紧密,无法使查询正常工作。确保它们都相同,最好是utf8_general_ci。

【讨论】:

【解决方案2】:

我已经解决了我上面的问题

SELECT DISTINCT country
FROM   propertydetails
WHERE  country NOT IN ( _latin1 "Golīmar" )

以及latin1、latin1_swedish_ci的连接和表的字符集和排序规则

【讨论】:

    猜你喜欢
    • 2010-11-03
    • 2017-10-19
    • 2010-11-17
    • 2012-08-28
    • 1970-01-01
    • 2013-08-01
    • 2011-03-03
    相关资源
    最近更新 更多