我正在使用Heroku的基础数据库计划。该计划使用支持本地化的Postgres 9.1。我的应用程序在排序方面出现了问题,因为 ÅÄÖ 这些字符没有按照瑞典的要求进行处理。
需要设置的选项是 LC_COLLATE,它处理字符串的排序。问题是我找不到任何方法在Heroku上进行这个设置。创建的数据库默认为 lc_collate=en_US.UTF-8,但我需要将其设置为 sv_SE.UTF-8。
由于无法更改已创建的数据库的此 LC_COLLATE 设置,因此我无法通过psql控制台更改它。
那么,我该如何设置呢?
需要设置的选项是 LC_COLLATE,它处理字符串的排序。问题是我找不到任何方法在Heroku上进行这个设置。创建的数据库默认为 lc_collate=en_US.UTF-8,但我需要将其设置为 sv_SE.UTF-8。
由于无法更改已创建的数据库的此 LC_COLLATE 设置,因此我无法通过psql控制台更改它。
那么,我该如何设置呢?
CREATE DATABASE ... LC_CTYPE 'blah' LC_COLLATE 'blah'
设置每个数据库排序规则;令人遗憾的是 Heroku 并没有向用户公开此功能。 - Craig Ringer使用Rails,我编写了一个rake任务来改变排序规则,代码如下:
namespace :setup do task :heroku_collation => :environment do ActiveRecord::Base.establish_connection ActiveRecord::Base.connection.execute 'ALTER TABLE municipalities ALTER COLUMN name TYPE varchar COLLATE "sv_SE";' end end - Stefan Pettersson