У меня есть такой запрос с именем UTF8:
select column from table where name = 'something'
Когда я пытаюсь это сделать с моего клиента mysql (HeidiSQL), результат возвращается, даже если есть разница между именем и чем-то другим. Это хорошо.
Допустим, когда я запускаю тот же запрос из PHP с PDO, тогда по какой-либо причине запрос чувствителен к регистру.
В таблице используется сортировка по умолчанию utf8_general_ci, а в соединении PDO я устанавливаю только charset = utf8.
Должна ли тогда сортировка по умолчанию для соединения PDO также нечувствительна к регистру?
Из 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"
}
}
Я не уверен, почему сортировка сервера latin1_swedish_ci вызвала проблему, когда соединения и сопоставления баз данных были utf8_general_ci, но когда я также изменил настройку сервера на utf8_general_ci:
set global collation_server = "utf8_general_ci";
Затем запрос начал работать с незаметно с PHP.