如何在Linux中实现与Mac OS相同的Postgres排序规则行为?

时间:2013-05-02 00:33:34

标签: postgresql postgresql-9.2

在Mac OS(开发)和Linux(生产服务器)之间切换时,Postgres的排序规则会更改,因为Postgres中的排序规则依赖于底层操作系统配置。

如何在Linux中实现与Mac OS中相同的Postgres排序规则行为?

我正在运行Postgres 9.2

2 个答案:

答案 0 :(得分:7)

OS X上的语言环境已被彻底打破,而Linux(glibc)上的语言环境则不足,因此您将难以成功排序。唯一的方法是使用最低公分母,即C语言环境。但是,如果您正在开发实际依赖于有用的自然语言校对行为的应用程序,则需要在生产中使用的同一平台上执行此操作。我建议在OS X机器上设置一个运行Linux的虚拟盒。

答案 1 :(得分:6)

您可以控制CREATE DATABASE - see the LC_COLLATE option to CREATE DATABASE时使用的整理。

PostgreSQL将使用底层操作系统排序规则,因此如果操作系统不提供完全相同的区域设置或它们的实现不同,则无法始终获得完全匹配。添加对using ICU的支持以进行内部独立于操作系统的排序规则长期以来一直列在愿望清单中,但这是一项巨大的工作,没有人想要做到这么糟糕。