Doctrine 2.3: Datenbank Schema Generierung und Character Sets (charset)

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.

Veröffentlicht von

www.mabraham.de

Kommt noch.