Сегодня я получил следующую ошибку в приложении, которое использует doctrine2
Message: SQLSTATE[HY000]: General error: 1267 Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_unicode_ci,COERCIBLE) for operation 'like'
Я проверил с phpmyadmin, что сортировка таблицы – latin1_swedish_ci.
В моем приложении я настроил доктрину для использования utf8
$em->getEventManager()->addEventSubscriber(new \Doctrine\DBAL\Event\Listeners\MysqlSessionInit('utf8', 'utf8_unicode_ci'));
Моя база данных была сгенерирована с помощью скрипта установки, который запустил равный сконфигурированный менеджер объектов.
Как установить сопоставление моей таблицы с utf8_general_ci с помощью doctrine2?
Раньше я сообщал об ошибке в Symfony, а затем перешел в Doctrine. @ elliot упомянул проблему в создании базы данных .
Поэтому в этом случае я думаю, что ошибка все еще существует. Таким образом, вы хотите создать базу данных вручную с помощью utf-8, тогда она будет выполнять другую работу.
Но, по словам Бенджамина Эберлей, он упоминает о слушателе событий postConnect для MySQL, который вызывает «SET NAMES UTF-8». Ссылка DBAL, о которой он говорил, была сломана, иначе я бы заглянул в нее.
Надеюсь это поможет
если вы используете код использования аннотации ниже для установки сортировки, движка и кодировки:
/** * @ORM\Table(name="temporary", options={"collate"="utf16_latin_ci", "charset"="utf16", "engine"="MyISAM"}) * @ORM\Entity */
Для yml-файлов это одно и то же.