我运行的是安装了PostgreSQL 9.2的Debian3.2。我的一个同事用日语初始化了数据库集群。所以现在,使用createdb创建的每个数据库,无论用户是谁,现在都是以日语作为其语言实例化的。
我找不到一种方法将语言重置为英语,而不必在新的集群上再次运行initdb。我真的不想这样做,因为有很多数据无法下降。
据我所知,当带有这些标志的命令被称为initdb -D /place/for/data --locale=ja_JP时,数据库集群被设置为日语。但是,当我创建相同的集群,然后使用createdb创建一个新数据库时,错误消息的语言是英语。在我的同事集群中,此场景中的错误消息将生成日语错误消息。
有人能帮我理解一下PostgreSQL 9.2中的语言环境是如何工作的吗?怎样才能把集群改回英语呢?
发布于 2013-06-08 19:35:13
在没有完全转储和重新加载的情况下,您无法将集群完全更改回英语。
一般而言,邮局主管将以初始化数据库集群的语言和编码发出消息。单个数据库上的会话将以创建数据库时使用的语言和编码发出消息,这可能与群集默认设置不同。
这可能会导致日志采用混合语言和混合文本编码,这真的很难看。尽管对邮件列表进行了反复的讨论,但我们始终没有就如何解决这个问题达成一致--它比看起来复杂得多。
由于每个会话都在其自己的区域设置中进行记录,因此您可以使用每个CREATE DATABASE manual page的适当LC_CTYPE、ENCODING、LC_COLLATE等设置进行CREATE DATABASE ...。您可能必须指定TEMPLATE template0才能成功。这将导致新创建的数据库使用所需的语言和编码;然后,您可以将每个旧数据库转储到相应的新数据库中,重命名旧数据库,然后将新数据库重命名为旧数据库的位置。当你觉得一切顺利的时候,旧的就可以放弃了。
邮局局长级别的邮件仍将使用日语。我不认为没有re-initdb就没有办法解决这个问题。更糟糕的是,如果它不是jp_JP.UTF-8而是一种不同的编码,那么您的日志文件中可能有混合的编码,这可能会使日志文件处理器等非常混乱。
https://stackoverflow.com/questions/16995057
复制相似问题