Как установить параметры сортировки таблицы в utf_general_ci с помощью doctrine2 - PullRequest
1 голос
/ 08 ноября 2011

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

В моем приложении я настроил доктрину дляuse utf8

$em->getEventManager()->addEventSubscriber(new \Doctrine\DBAL\Event\Listeners\MysqlSessionInit('utf8', 'utf8_unicode_ci')); 

Моя база данных была сгенерирована с помощью сценария установки, сгенерировал такой же сконфигурированный менеджер сущностей.

Как установить сопоставление моей таблицы в utf8_general_ci с использованием doctrine2?

Ответы [ 2 ]

1 голос
/ 13 апреля 2013

, если вы используете аннотацию, используйте код ниже, чтобы установить параметры сортировки, двигатель и кодировку:

/**
* @ORM\Table(name="temporary", options={"collate"="utf16_latin_ci", "charset"="utf16", "engine"="MyISAM"})  
* @ORM\Entity
*/    

Для файлов yml это то же самое.

1 голос
/ 08 ноября 2011

Ранее я сообщал об ошибке в Symfony , а затем перешел в Doctrine.@ elliot упомянул проблему при создании базы данных .

Так что в этом случае я думаю, что ошибка все еще там.Итак, вы хотите создать базу данных вручную с помощью utf-8, затем она выполнит другую работу.

Но, согласно Бенджамину Эберлей, он упоминает о postConnect прослушивателе событий для MySQL, который вызывает 'SETИмена UTF-8 '.Ссылка на DBAL, которую он упомянул, была сломана, иначе я бы посмотрел на нее.

Надеюсь, это поможет

...