错误1267非法混合排序规则

时间:2018-04-10 14:16:06

标签: mysql

我正在运行以下查询

SELECT * FROM leads WHERE LCASE(address) = "2560 Cherry cir"

我收到错误

General error: 1267 Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '='

我认为有一些奇怪的空格字符会导致错误(2560:Cherry's cir)

地址由用户输入,并提交到使用PDO汇编和运行查询的php页面。

<input type='text' name='address' />

$this->db->select(
            "SELECT
                *
            FROM leads
            WHERE
                LCASE(address)=:address

                array( ":address" => strtolower($address) ) );

select函数定义如下:

public function select($sql, $array = array(), $fetchMode = PDO::FETCH_ASSOC)
    {
        $sth = $this->handleDB->prepare($sql);
        foreach ($array as $key => $value) {
            $sth->bindValue("$key", $value);
        }

        $sth->execute();
        return $sth->fetchAll($fetchMode);
    }

我该如何解决这个问题?数据库和表的排序规则都是UTF-8?我在PHP中使用PHP,并在PDO中将字符集设置为UTF-8。

1 个答案:

答案 0 :(得分:0)

发现问题,该表设置为UTF-8排序规则,但该列设置为拉丁文。