First, edit your config/databases.yml and add :
[yml] all: doctrine: class: sfDoctrineDatabase param: dsn: mysql:socket=/var/run/mysqld/mysqld.sock;dbname=mydb username: mydb password: mypassword encoding: utf8 attributes: default_table_collate: utf8_unicode_ci default_table_charset: utf8
Then open your config/doctrine/schema.yml and add at the top of your file :
|yml] --- detect_relations: true options: collation: utf8_unicode_ci charset: utf8 type: InnoDB
Of course, if you want to stick to myisam, replace InnoDB by MyIsam.
Befware, some plugins provides their own schema.yml. You may have to modify it, or to inherite it and specify that they're in utf8 (to come later)
Symfony 1.2, 1.3 and 1.4
1 De benoit -
Vous savez, il y'a toujours un truc dans sa chaussette qui nous gène et dont on arrive pas à se débarasser. Et bien voilà, moi c'était doctrine qui me faisait des misères avec l'utf8 et un build --all --and-load. C'est maintenant résolu grace aux explications ci-dessus. Merci Maïtre Yoda.
2 De Erwane -
Merci pour tout ceci, en effet ça fixe tous les interclassements à UTF-8 pour les tables, mais la DB en elle même reste en latin1_swedish_ci :(
Ce n'est pas vraiment un problème mais c'est le gâteau sous la cerise :)
3 De Alain -
Sur linux : http://dev.sans-bouger.fr/article?n...
Sur windows :
Ajouter les 2 lignes :
collation_server=utf8_unicode_ci
character_set_server=utf8
dans la section [mysqld] du my.ini (pour Wamp), redémarrer le serveur et lancer :
php symfony doctrine:build --all --no-confirmation
PS: de la même façon il est possible de changer le moteur par défaut :
default-storage-engine=INNODB