PostgreSQL 9.1 安装和数据库编码

标签 postgresql installation ubuntu-10.04

我刚刚在 Ubuntu 10.04 上首次安装了 PostgreSQL 9.1。

注意:我已经在 Windows 上使用安装程序完成了几次,没有出现任何问题。

经过一番努力,我将其设置为通过 pgAdminIII 进行远程连接。然而,在连接到数据库后,我真的很惊讶,我收到了关于编码的警告。 “postgres”数据库本身是用“SQL_ASCII”编码创建的。每次我在 Windows 上安装时,它都会创建带有“UTF8”的 postgres 数据库——这看起来会好很多,并且会在通过 pgAdminIII 打开数据库时停止警告消息。

我做错了什么吗?是否有用于设置要使用的默认编码的安装选项/参数?

还有办法解决这个问题吗?我在网上读过一些东西,说你需要 dumb 和 restore 来改变数据库的编码,但我不确定这在 postgres db 上是否可行。是吗?

感谢您的帮助!

最佳答案

initdb 命令的相关选项是 --locale=locale,它会初始化您的数据库集群。如果你没有明确提供它,它默认为系统区域设置。 (您可能在区域设置“C”上运行 Ubuntu。)

阅读more about it in the excellent manual here .

在 PostgreSQL 中,您可以通过基于 template0 而不是默认 templeate1 的新数据库潜入具有不同区域设置的数据库。我引用 manual here :

The encoding and locale settings must match those of the template database, except when template0 is used as template.

但我宁愿使用所需的语言环境重新创建数据库集群。干净多了。


编辑:有关可用语言环境的信息

您只能使用操作系统提供的语言环境。我引用 manual here :

What locales are available on your system under what names depends on what was provided by the operating system vendor and what was installed. On most Unix systems, the command locale -a will provide a list of available locales. Windows uses more verbose locale names, such as German_Germany or Swedish_Sweden.1252, but the principles are the same.

如果您想使用尚未生成的语言环境,请查看 Unix 系统中的 locale-gen。需要了解的重要一点是,可以在您的操作系统中安装多个区域设置,但只能为系统参数选择其中一个区域设置,例如 LC_CTYPELC_COLLATE 等。看看locale 的输出与 shell 中的 locale -a 的输出。通常它对所有人都是一样的,通过 LC_ALL 设置。

@David:您所做的可能已经解决了您的问题,但您可以更轻松地解决问题。另外,请注意环境变量 LANG 仅为所有区域设置提供默认。如果其中任何一个被设置为不同的东西,LANG 将被覆盖。设置 LC_ALL 以覆盖任何现有设置。这是 one of many sites在网络上告诉您更多相关信息。

要检查数据库(集群)的所有当前区域设置,请在数据库中运行:

SHOW ALL;

或者更具体地说:

SELECT *
FROM   pg_settings
WHERE  name ~~ 'lc%';

关于PostgreSQL 9.1 安装和数据库编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8394789/

相关文章:

linux - 如何在 ubuntu 16.04 中安装 laravel 5.6?

windows - Mac .Pkg 文件在 Windows 中打开...奇怪的事情

xcode - "Monotouch is not installed"错误

linux - 在 Ubuntu 上暂时禁用 Gold Linker

java - 如何使用postgresql数据库在hibernate中获取远程端数据库的数据

sql - 带有忽略条件的 case 语句 postgres 9.3

javascript - 犀牛与蜘蛛猴

ruby-on-rails - Sidekiq 工作卡在队列中

sql - 按正数和负数计算排名

mysql - 缩放自动增量