私はHerokuでBasicデータベースプランを使用しています。これは、ロケールをサポートしているPostgres 9.1で動作します。 ÅÄÖの文字は適切に処理されないため、私のアプリではソートに問題があります(スウェーデンではそうすべきです)。Heroku postgresでロケールを設定
設定する文字列の順序を処理するLC_COLLATE
です。問題は、私がHerokuでこれを設定する方法を見つけることができないということです。作成されるデータベースはlc_collate=en_US.UTF-8
ですが、sv_SE.UTF-8
に設定する必要があります。
このLC_COLLATE
は、データベースの作成時に変更できないため、psqlコンソールから変更することはできません。
どうすれば設定できますか?
うわー、それは本当に迷惑なんです。 PostgreSQLは 'CREATE DATABASE ... LC_CTYPE 'を使ってデータベースごとの照合順序を設定することができます。blah' LC_COLLATE 'blah'';それはHerokuがユーザーにそれを公開していないことを吸う。 –
ありがとうございます、それは、列の照合を変更するように動作するようです。私は最初に照合を作成しなければならなかった。ありがとう。 – Linus
ありがとう!最後に。私はこれをあまりにも長く苦労してきました。 私にとっては「sv-SE.UTF-8」ではなく「sv-SE」でしか動作しませんでした。 のActiveRecord :: Base.establish_connection はActiveRecord ::ベースを行う環境:heroku_collation =>: 作業を行うセットアップ: ---- 名前空間: 使用して、レールには、私は次のコードとの照合を変更するにはrakeタスクを作りました。 connection.execute 'ALTER TABLE地方自治体ALTER COLUMN名前型varchar COLLATE "sv_SE";' end end –