Назад | Перейти на главную страницу

Как я могу запросить кодировку кластера postgresql?

Когда вы создаете новый кластер postgresql, вы можете указать кодировку для кластера, но я не уверен, что знаю, как получить ее после создания кластера.

Я видел это с \encoding вы можете увидеть кодировку, но я не знаю, это кодировка кластера или кодировка клиента.

Я также видел это с \l Я вижу кодировку, используемую каждой базой данных.

И SHOW server_encoding показывает другую кодировку.

Как правильно запросить значение, используемое во время инициализации?

Каждая база данных в кластере может иметь свою собственную кодировку, хотя для большинства людей это, вероятно, бесполезно.

При создании кластера указанная вами кодировка используется для баз данных template1 и postgres, поэтому она используется по умолчанию для всех новых. Однако вы можете создать новую базу данных из template0 в другой кодировке.

\encoding показывает кодировку, используемую для протокола связи клиент <-> сервер, и эквивалентна show client_encoding. server_encoding показывает кодировку, используемую для базы данных, к которой вы в данный момент подключены. Он должен показать кодировку, используемую для создания кластера, если вы подключены к template1. Кодировка для каждой базы данных указана в pg_database, например: следует

select datname, pg_encoding_to_char(encoding) from pg_database

Вы можете использовать pg_controldata: pg_controldata <path/to/cluster> |grep LC_ где путь - это место, где находится ваш кластер.

Это будет примерно так:

LC_COLLATE: en_US.UTF-8

LC_CTYPE: en_US.UTF-8