postgresql – 在Heroku postgres上设置语言环境

我在Heroku使用Basic数据库计划.这在Postgres 9.1上运行,它支持语言环境.我在我的应用程序中排序存在问题,因为角色ÅÄÖ没有得到妥善处理(正如他们应该在瑞典).

要设置的设置是LC_COLLATE,它处理字符串排序.问题是我找不到任何方法在Heroku上设置它.创建的数据库获取lc_collat​​e = en_US.UTF-8,但我需要将其设置为sv_SE.UTF-8.

创建数据库时无法更改此LC_COLLATE设置,因此无法通过psql控制台更改它.

那么,我该怎么设置呢?

你是正确的,无法改变数据库认排序规则; 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";

有关更多信息,请参阅Postgresql手册中的22.2. Collation Support.

您可能需要也可能不需要先创建COLLATION.此外,所有这些都取决于安装了正确的语言环境数据的Heroku数据库服务器 – 尽管如果没有,您可能会很好地要求部署,因为它不会伤害任何人.

如果做不到这一点,您当然可以在EC2中运行自己的Postgresql实例,无论您想要什么样的自定义设置.这需要投入管理时间,但诚实地运行9.1非常简单,甚至包括流复制.甚至可能更便宜.缺点是保持数据库运行成为你的问题而不是Heroku ops团队的问题.

相关文章

项目需要,有个数据需要导入,拿到手一开始以为是mysql,结果...
本文小编为大家详细介绍“怎么查看PostgreSQL数据库中所有表...
错误现象问题原因这是在远程连接时pg_hba.conf文件没有配置正...
因本地资源有限,在公共测试环境搭建了PGsql环境,从数据库本...
wamp 环境 这个提示就是说你的版本低于10了。 先打印ph...
psycopg2.OperationalError: SSL SYSCALL error: EOF detect...