In Symfony2 / Doctrine2 Projekten können Entitäten u.a. in YAML definiert und das Datenbank Schema via app/console doctrine:schema:create
generiert werden. In Doctrine 2.3 machte mir dabei eine kleine Änderung bezüglich der Behandlung von Encoding und Collation Probleme.
Seit 2.3 wird unabhängig von der Konfiguration der Applikation oder des Datenbankservers grundsätzlich von utf8
als Encoding und utf8_unicode_ci
als Collation ausgegangen. Um ein abweichendes Encoding wie Latin1
verwenden zu können, muss dies in der Definition der Entität explizit angeben.
Um beispielsweise in der Entität Task
latin1/latin1_swedish_ci
verwenden, muss die Definition wie folgt erweitert werden:
Acme\Entity\Task: type: entity table: Task [..] # begin: charset/ collation options: charset: "latin1" collate: "latin1_swedish_ci" # end: charset/ collation start id: id: type: integer generator: { strategy: AUTO } [..]
Im folgenden Support-Ticket bestätigt Benjamin Eberlei von Doctrine dieses Verhalten. Doctrine setzt utf8/utf8-general-ci
als Standard fest. Möchte man hiervon abweichen, muss man dies explizit angeben.