Article View: pl.comp.lang.php
Article #230556Re: ZF2 + Doctrine + collation = porazka
From: Hoozar
Date: Thu, 11 Sep 2014 09:12
Date: Thu, 11 Sep 2014 09:12
46 lines
3159 bytes
3159 bytes
W dniu 10.09.2014 o 20:16, Borys Pogoreło pisze: > Dnia Wed, 10 Sep 2014 08:22:58 +0200, Hoozar napisał(a): > >>> To jest udokumentowane zachowanie: >>> http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/faq.html#how-do-i-set-the-charset-and-collation-for-mysql-tables >>> >> I tak i nie. Tak - bo trzeba odpowiednio skonfigurować bazę, żeby >> uzyskać odpowiednie collation. > > Ale to i tak należy zrobić, bo mogą się dziać cuda na różnych hostingach > (zwłaszcza szwedzkie iso). > To oczywiście zrobiłem. >> Nie - bo w źródłach Doctrine jest wpisane >> na sztywno 'utf8_unicode_ci'. Nie da się tego zmienić np. opcjami >> tabeli, bo JoinTable nie ma takiego parametru. Jeśli teraz będę chciał >> mieć bazę w innym collation czy w innym kodowaniu to i tak się wszystko >> wywali :-( > > W sensie Doctrine i tak ustawi utf8_unicode_ci zamiast dziedziczyć z > ustawień bazy, pomimo zapewnień w FAQ? Jeśli tak, to faktycznie bym zgłosił > buga. > Dokładnie tak zrobi. To działa w ten sposób: - jeśli tabela ma ustawione w opcjach (np. adnotacjami) 'collate', to Doctrine weźmie przy tworzeniu tabeli 'collate' z opcji. - jeśli nie ma, to weźmie na sztywno 'utf8_unicode_ci' Teraz cały problem polega na tym, że przy tworzeniu joinTable nie da się podać 'collate' jako opcji tabeli - będzie rzucał błędami, że nierozpoznany parametr. Tak więc weźmie opcję defaultową, czyli 'utf8_unicode_ci'. Najgorsze jest to, że do wersji 2.2 brał z ustawień bazy. Od 2.3 ma na sztywno - nie rozumiem takiego podejścia. Teraz żeby nie być gołosłownym: https://github.com/doctrine/dbal/blob/master/lib/Doctrine/DBAL/Platforms/MySqlPlatform.php - linia 476 https://github.com/doctrine/dbal/blob/master/UPGRADE.md - na samym dole w sekcji 'Upgrade to 2.3': If you are creating a new MySQL Table through the Doctrine API, charset/collate are now set to 'utf8'/'utf8_unicode_ci' by default. Previously the MySQL server defaults were used.
Technical Details
Message-ID:
<lurp3h$ie3$1@usenet.news.interia.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!news.interia.pl!not-for-mailReferences:
<lumnq1$la$2@usenet.news.interia.pl> <lumnro$la$3@usenet.news.interia.pl> <lumpoa$3or$1@node2.news.atman.pl> <lumr3b$805$1@usenet.news.interia.pl> <1a4hqjvn5bpc5$.18pkpldbomhpo$.dlg@40tude.net> <luoqq0$cu8$1@usenet.news.interia.pl> <1b7bjz0upmqms.1do58y9wxdi6$.dlg@40tude.net>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!news.interia.pl!not-for-mail From: Hoozar <hoozar@interia.pl> Newsgroups: pl.comp.lang.php Subject: Re: ZF2 + Doctrine + collation = porazka Date: Thu, 11 Sep 2014 11:12:30 +0200 Organization: INTERIA.PL S.A. Lines: 48 Message-ID: <lurp3h$ie3$1@usenet.news.interia.pl> References: <lumnq1$la$2@usenet.news.interia.pl> <lumnro$la$3@usenet.news.interia.pl> <lumpoa$3or$1@node2.news.atman.pl> <lumr3b$805$1@usenet.news.interia.pl> <1a4hqjvn5bpc5$.18pkpldbomhpo$.dlg@40tude.net> <luoqq0$cu8$1@usenet.news.interia.pl> <1b7bjz0upmqms.1do58y9wxdi6$.dlg@40tude.net> NNTP-Posting-Host: 188.123.220.84 Mime-Version: 1.0 X-Trace: usenet.news.interia.pl 1410426801 18883 188.123.220.84 (11 Sep 2014 09:13:21 GMT) X-Complaints-To: usenet@firma.interia.pl NNTP-Posting-Date: Thu, 11 Sep 2014 09:13:21 +0000 (UTC) User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:31.0) Gecko/20100101 Thunderbird/31.1.0 In-Reply-To: <1b7bjz0upmqms.1do58y9wxdi6$.dlg@40tude.net> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit