当你创build一个新的postgresql集群时,你可以为集群指定一个编码,但是我不知道如何在集群创build完成后检索它。
我已经看到,用\encoding你可以看到一个编码,但我不知道这是集群的编码或客户端的编码。
我也看到,我可以看到每个数据库使用的编码。
而SHOW server_encoding显示另一种编码。
什么是正确的方式来查询初始化过程中使用的值?
群集中的每个数据库都可以有自己的编码,尽pipe这可能对大多数人没有用处。
创build群集时,您指定的编码用于template1和postgres数据库,所以它是所有新数据库的默认值。 不过,您可以使用不同的编码方式从template0创build新的数据库。
\encoding显示用于客户端< – >服务器通信协议的编码,相当于show client_encoding 。 server_encoding显示用于当前连接到的数据库的编码。 如果连接到template1,它应该显示用于创build群集的编码。 每个数据库的编码都列在pg_database ,例如:should
select datname, pg_encoding_to_char(encoding) from pg_database
您可以使用pg_controldata: pg_controldata <path/to/cluster> |grep LC_ ,其中path是您的群集所在的位置。
这将输出类似这样的东西:
LC_COLLATE:en_US.UTF-8
LC_CTYPE:en_US.UTF-8