您是正确的,不能更改数据库的默认排序规则;LC_COLLATE
是在 Heroku 数据库服务器上设置的环境变量,它不在您的控制范围内,并且在创建数据库之前已经设置。但是,您可以为各个列设置默认排序规则:
CREATE TABLE new_table (
foo varchar COLLATE "sv_SE.UTF-8",
bar varchar COLLATE "sv_SE.UTF-8"
);
ALTER TABLE existing_table ALTER COLUMN baz TYPE varchar COLLATE "sv_SE.UTF-8";
更多信息,请参见22.2。PostgreSQL 手册中的排序规则支持。
您可能需要也可能不需要CREATE COLLATION
首先。此外,所有这一切都取决于安装了正确语言环境数据的 Heroku 数据库服务器——尽管如果他们没有安装,您可能会很好地要求部署它,因为它不会伤害任何人。
如果做不到这一点,您当然可以在 EC2 中运行您自己的 PostgreSQL 实例,并使用您想要的任何自定义设置。这需要投入管理时间,但老实说运行 9.1 非常简单,甚至包括流复制。甚至可能更便宜。缺点是保持数据库运行成为您的问题,而不是 Heroku 操作团队的问题。