如何查询postgresql集群的编码?

如何查询postgresql集群的编码?

当您创建一个新的 postgresql 集群时,您可以为该集群指定一个编码,但我不确定如何在创建集群后检索它。

我已经看到\encoding您可以看到编码,但我不知道这是集群的编码还是客户端的编码。

我还看到,\l我可以看到每个数据库使用的编码。

SHOW server_encoding显示另一种编码。

在初始化期间查询使用的值的正确方法是什么?

答案1

集群中的每个数据库都可以有自己的编码,尽管这对大多数人来说可能没用。

创建集群时,您指定的编码将用于 template1 和 postgres 数据库,因此它是所有新数据库的默认编码。不过,您可以使用不同的编码从 template0 创建新数据库。

\encoding显示客户端<->服务器通信协议使用的编码,相当于show client_encodingserver_encoding显示当前连接到的数据库使用的编码。如果您连接到 template1,它应该显示用于创建集群的编码。每个数据库的编码列在中pg_database,例如:应该

select datname, pg_encoding_to_char(encoding) from pg_database

答案2

您可以使用 pg_controldata:pg_controldata <path/to/cluster> |grep LC_其中路径是您的集群所在的位置。

这将输出类似这样的内容:

LC_COLLATE: en_US.UTF-8

LC_CTYPE: en_US.UTF-8

相关内容