我有一个utf8名称的查询:
select column from table where name = 'something'
当我从mysql客户机(heidisql)尝试这个方法时,即使名称和其他东西之间有大小写差异,也会返回结果。这很好。然而,当我用pdo从php运行相同的查询时,由于某些原因,查询是区分大小写的。该表使用默认的排序规则utf8\u general\u ci,在pdo连接中,我只设置charset=utf8。那么pdo连接的默认排序规则不应该也是不区分大小写的吗?
6jjcrrmo1#
我从php打印了排序规则变量:
show variables where variable_name like '%coll%';
上面写着:
array(3) { [0]=> array(2) { ["Variable_name"]=> string(20) "collation_connection" ["Value"]=> string(15) "utf8_general_ci" } [1]=> array(2) { ["Variable_name"]=> string(18) "collation_database" ["Value"]=> string(15) "utf8_general_ci" } [2]=> array(2) { ["Variable_name"]=> string(16) "collation_server" ["Value"]=> string(15) "latin1_swedish_ci" } }
当连接和数据库排序规则为utf8\u general\u ci时,我不确定为什么服务器排序规则latin1\u swedish\u ci会导致问题,但当我将服务器排序规则也更改为utf8\u general\u ci时:
set global collation_server = "utf8_general_ci";
然后查询也从php开始不敏感地处理case。
1条答案
按热度按时间6jjcrrmo1#
我从php打印了排序规则变量:
上面写着:
当连接和数据库排序规则为utf8\u general\u ci时,我不确定为什么服务器排序规则latin1\u swedish\u ci会导致问题,但当我将服务器排序规则也更改为utf8\u general\u ci时:
然后查询也从php开始不敏感地处理case。