Suosin yleensä PostgreSQL-tietokantaa Rails-sovellusten kanssa lähinnä helpon käyttöönoton ja henkilökohtaisten tottumusten vuoksi. Joskus harvoin, asiakkaan määrittelyjen perusteella, päädyn kuitenkin käyttämään MySQL:ää. Koska lähes kaikki asiakkaamme ovat kotimaisia ja palvelut toteutetaan pääsääntöisesti suomeksi, tietokannan sisällön UTF-8 -merkistökoodaus on ehdoton edellytys. PostgreSQL käyttää oletuksena sekä sovellus että palvelin päässä UTF-8 -merkistökoodausta, mutta MySQL vaatii pientä lisäsäätöä - kuten tuskallisesti erään palvelun julkaisemisen jälkeen huomasin.
Määritykset MySQL:n oletusmerkistökoodaaukseen löytyvät (ainakin Ubuntu 10.04LTS -ympäristössä) /etc/mysql/my.cnf -tiedostosta, osioista [client] sekä [mysqld].
Alla esimerkki:
[client]
default-character-set=utf8
...
[mysqld]
character-set-server=utf8
default-collation=utf8_unicode_ci
default-character-set=utf8
...
Huomaa kuitenkin, että asetusmuutokset eivät vaikuta jo olemassa oleviin tietokantoihin. Mikäli teit saman virheen ja tuotantotietokantasi käyttää jo Latin-1 -merkistökoodausta, peli ei ole vielä menetetty, mutta korjaukset vaativat jonkin verran manuaalista työtä. Helpoin tapa on dumpata kanta talteen ja konvertoida/putsata virheelliset merkit dumppitiedostosta käyttäen apuna iconv-sovellusta. Hyviä ohjeistuksia löytyy ainakin täältä ja täältä.
Rails vaatii ainoastaan yhden parametrin config/database.yml -tiedostoon. Lisää rivi:
encoding: utf8
haluamasi ympäristön alle ja kaikki on valmista!