微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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团队的问题.

原文地址:https://www.jb51.cc/postgresql/191916.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐