在 Mac OS(开发)和 Linux(生产服务器)之间切换时,Postgres 的排序规则会发生变化,因为 Postgres 中的排序规则取决于底层操作系统配置。
如何在 Linux 中实现与在 Mac OS 中相同的 Postgres 整理行为?
我正在运行 Postgres 9.2
在 Mac OS(开发)和 Linux(生产服务器)之间切换时,Postgres 的排序规则会发生变化,因为 Postgres 中的排序规则取决于底层操作系统配置。
如何在 Linux 中实现与在 Mac OS 中相同的 Postgres 整理行为?
我正在运行 Postgres 9.2
OS X 上的语言环境已被充分破坏,而 Linux (glibc) 上的语言环境则完全没有,因此您将很难成功地解决这个问题。唯一的方法是使用最低的公分母,即 C 语言环境。但是,如果您正在开发一个实际上依赖于有用的自然语言排序行为的应用程序,那么您需要在生产中使用的同一平台上进行。我建议在你的 OS X 机器上设置一个运行 Linux 的虚拟机。
您可以在看到选项CREATE DATABASE
时控制使用的排序规则。LC_COLLATE
CREATE DATABASE
PostgreSQL 将使用底层操作系统整理例程,因此如果操作系统不提供完全相同的语言环境或它们的实现不同,您就不能总是得到完全匹配。添加对使用 ICU进行独立于操作系统的内部排序的支持长期以来一直在愿望清单上,但这是一项艰巨的工作,目前还没有人非常想做。