Как установить сопоставление таблицы с utf_general_ci с помощью doctrine2

Сегодня я получил следующую ошибку в приложении, которое использует 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?

Solutions Collecting From Web of "Как установить сопоставление таблицы с utf_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-файлов это одно и то же.