Я пытался объединить два столбца в таблицах, которые использовали разные параметры сортировки, используя Zend Db, и я получил эту ошибку:
Illegal mix of collations (utf8_general_ci,IMPLICIT) and (utf8_unicode_ci,IMPLICIT) for operation '=')
После поиска и поиска нескольких вопросов по Stackoverflow я добавил COLLATE utf8_unicode_ci
в свое объединение следующим образом:
$select = $this->getSql()->select();
$select->columns(['*', new Expression('count(*) as count')]);
$select->join(
['tbl2' => 'table2'],
'table1.name COLLATE utf8_unicode_ci = tbl2.name',
['person_id' => 'id'],
$select::JOIN_LEFT
);
Но теперь я получаю другую ошибку:
...
could not be executed (42000 - 1064 - You have an error in your SQL syntax;
check the manual that corresponds to your MySQL server version for
the right syntax to use near '`COLLATE` `utf8_unicode_ci`
Это потому, что Zend автоматически цитирует мне ключевое слово COLLATE
, но я хочу использовать зарезервированное слово в условии join
.