9.26. Системные информационные функции и операторы

SHOW — показать значение параметра времени выполнения

Я только что установил Postgres и пытаюсь проверить, работает ли он и на каком порту, хотя я знаю, какой порт по умолчанию у него обычно есть.
эти команды не показывают мне порт.

 service postgresql status

  

Я понимаю

 postgresql.service - PostgreSQL RDBMS
   Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor prese
   Active: active (exited) since Tue 2018-09-18 14:17:14 CEST; 22min ago
  Process: 2632 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
 Main PID: 2632 (code=exited, status=0/SUCCESS)
    Tasks: 0
   Memory: 0B
      CPU: 0
   CGroup: /system.slice/postgresql.service

Sep 18 14:17:14 user-HP-Pavilion-TS-15-Notebook-PC systemd[1]: Starting PostgreS
Sep 18 14:17:14 user-HP-Pavilion-TS-15-Notebook-PC systemd[1]: Started PostgreSQ
Sep 18 14:39:19 user-HP-Pavilion-TS-15-Notebook-PC systemd[1]: Started PostgreSQ

  

И когда я просто пытаюсь просто проверить процесс и посмотреть, какой порт он показывает, это после команды

  sudo netstat -plunt |grep postgres

tcp        0      0 127.0.0.1:5432          0.0.0.0:*               LISTEN      2592/postgres   
tcp        0      0 127.0.0.1:9187          0.0.0.0:*               LISTEN      1065/postgres_expor

  

Как мне заставить порт показываться и что происходит?

спросил 18 сен 2018 в 12:47

valik's user avatar

Просто подключитесь и запустите команду.

Если вы можете подключиться к PostgreSQL с исходного компьютера, вы можете увидеть, какой порт он прослушивает:

ответил 21 июля 2021 в 14:15

Vikram's user avatar

3 серебряных значка
16 бронзовых знаков

Сначала найдите процесс «postmaster», родительский для всех остальных процессов PostgreSQL.

Вы можете получить его из postmaster.pid
файл в каталоге данных PostgreSQL, если база данных запущена.

Тогда вы можете получить порт с помощью lsof
. Предполагая, что идентификатор процесса равен 23521, запустите

 lsof -P -sTCP:LISTEN -i TCP -a -p 23521

  

Это покажет вам порт, который прослушивает PostgreSQL.

ответ дан 18 сен 2018 в 13:47

Laurenz Albe's user avatar

Лауренц Альбе

17 золотых знаков
207 серебряных знаков
265 бронзовых знаков

При работе с базами данных крайне важно получить информацию об имени хоста и номере порта. Это связано с тем, что базе данных Postgres для установления соединения требуется имя хоста и номер порта. Имена хостов указывают местоположение сервера базы данных, а номера портов указывают, как мы можем получить доступ к базе данных.

Эта статья иллюстрирует различные методы поиска имени хоста и номера порта в PostgreSQL.

Как проверить/найти имя хоста и номер порта в PostgreSQL?

В этом посте будут обсуждаться перечисленные ниже методы проверки имени хоста и номера порта:

  • Использование \conninfo
  • Использование pg_settings
  • Использование «inet_server_addr()» и «inet_server_port()»
  • Использование файла «postgresql.conf»

Как проверить/найти имя хоста и номер порта с помощью \conninfo?

 \conninfo 

img

Как проверить/найти номер порта с помощью pg_settings?

 ВЫБРАТЬ * ИЗ pg_settings
ГДЕ имя = 'порт'; 

img

Как проверить/найти имя хоста и «inet_server_addr()»?

 ВЫБЕРИТЕ inet_server_addr() КАК имя хоста; 

Указанная функция извлекает « ::1
», что эквивалентно « 127.0.0.1
«:

img

Как проверить/найти номер порта с помощью «inet_server_port()»?

 ВЫБЕРИТЕ inet_server_port() AS portNumber; 

Данная функция получает номер порта сервера как « 5432
«:

img

Как проверить/найти имя хоста и номер порта с помощью файла «postgresql.conf»?

 показать файл_конфигурации; 

Приведенный ниже фрагмент показывает, что файл конфигурации находится по пути «C:\Program Files\PostgreSQL\15\data\postgresql.conf»:

img

Перейдите по указанному пути, откройте файл конфигурации в любом текстовом редакторе и прокрутите немного вниз, чтобы добраться до « ПОДКЛЮЧЕНИЯ И АУТЕНТИФИКАЦИЯ
раздел »:

img

Фрагмент вывода показывает, что мы подключены к «localhost» через порт по умолчанию, то есть «5432».

В PostgreSQL для проверки/поиска имен хостов и номеров портов используется несколько методов, таких как команда «\conninfo», представление «pg_settings», функции «inet_server_addr()» и «inet_server_port()», и файл «postgresql.conf». В этом посте все эти методы были продемонстрированы на практических примерах.

/etc/services
является только рекомендательным, это известный список портов. Это не означает, что на этом порту на самом деле что-либо работает или что названный сервис будет работать на этом порту.

В случае PostgreSQL обычно используется порт 5432, если он доступен. Если это не так, большинство установщиков выбирают следующий свободный порт, обычно 5433.

Вы можете увидеть, что на самом деле выполняется с помощью инструмента netstat
(доступного в OS X, Windows и Linux, с синтаксисом командной строки, изменяющимся во всех трех).

Это еще более усложняется в системах Mac OS X ужасным беспорядком различных пакетов PostgreSQL — старинная версия PostgreSQL от Apple, встроенная в ОС, Postgres.app, Homebrew, Macports, установщик EnterpriseDB и т.д. и т.д.

Что происходит, так это то, что пользователь устанавливает Pg и запускает сервер из одной упаковки, но использует клиент psql
и libpq
из другой упаковки. Обычно это происходит, когда они запускают Postgres.app или homebrew Pg и подключаются к psql
, которые поставляются с ОС. Не только иногда имеют разные порты по умолчанию, но Pg, поставляемый с Mac OS X, имеет другой путь к сокету unix по умолчанию, поэтому, даже если сервер работает на том же порту, он не будет прослушивать один и тот же сокет unix.

Большинство пользователей Mac работают вокруг этого, просто используя tcp/ip с psql -h localhost
. Вы также можете указать порт, если требуется, например psql -h localhost -p 5433
. У вас может быть несколько экземпляров PostgreSQL, поэтому убедитесь, что вы подключаетесь к правильному, используя select version()
и SHOW data_directory;
.

Вы также можете указать каталог сокетов unix; проверьте параметр unix_socket_directories
экземпляра PostgreSQL, с которым хотите подключиться, и укажите это с помощью psql -h
, например psql -h /tmp
.

Более чистым решением является исправление вашей системы PATH
, чтобы psql
и libpq
, связанные с запущенным PostgreSQL, были найдены в первую очередь на PATH
. Детали этого зависят от вашей версии Mac OS X и пакетов Pg, которые вы установили. Я не использую Mac и не могу предложить гораздо больше деталей с этой стороны, не тратя больше времени, чем доступно в настоящее время.

I have PSQL running, and am trying to get a perl application connecting to the database. Is there a command to find the current port and host that the database is running on?

lospejos's user avatar

3 gold badges
19 silver badges
35 bronze badges

asked Apr 8, 2011 at 17:13

jamesatha's user avatar

   SELECT *
FROM pg_settings
WHERE name = 'port';
  
  

Deepak Mahakale's user avatar

answered Apr 8, 2011 at 17:21

This command will give you postgres port number

    \conninfo
  
  
   sudo netstat -plunt |grep postgres
  
  

OR (if it comes as postmaster)

   sudo netstat -plunt |grep postmaster
  
  

and you will see something similar as this

   tcp        0      0 127.0.0.1:5432          0.0.0.0:*               LISTEN      140/postgres
tcp6       0      0 ::1:5432                :::*                    LISTEN      140/postgres
  
  

In this case, the port number is 5432
which is also the default port number

answered Jun 24, 2016 at 10:36

Khaino's user avatar

1 gold badge
27 silver badges
36 bronze badges

The default PostgreSQL port is 5432
. The host that the database is operating on should have been provided by your hosting provider; I’d guess it would be the same host as the web server if one wasn’t specified. Typically this would be configured as localhost, assuming your web server and database server are on the same host.

Eric Leschinski's user avatar

answered Apr 8, 2011 at 17:18

Brad Koch's user avatar

Brad Koch

19 gold badges
111 silver badges
137 bronze badges

select inet_server_addr();
gives you the ip address of the server.

answered Sep 17, 2012 at 7:05

Kaarel's user avatar

1 gold badge
18 silver badges
16 bronze badges

   select inet_server_addr( ), inet_server_port( );
  
  

answered Jun 2, 2016 at 19:34

gerardw's user avatar

46 silver badges
39 bronze badges

enter image description here

answered Jun 5, 2014 at 15:43

bonCodigo's user avatar

1 gold badge
48 silver badges
91 bronze badges

select inet_server_port();
gives you the port of the server.

ответ дан 10 апр 2014 в 11:20

Andromida's user avatar

1 золотой значок
11 серебряных знаков
28 бронзовых знаков

Из терминала вы можете просто создать «кластеры списка postgres»:

 pg_lsclusters

  

Он вернет номер версии Postgres, имена кластеров, порты, статус, владельца, а также расположение ваших каталогов данных и файла журнала.

ответ дан 31 янв. 2021 в 7:14

Читайте также:  Личный кабинет ФСС на карте

mrwonderfulness's user avatar

Порт postgresql определен в вашем postgresql.conf
файл.

Для меня в Ubuntu 14.04 это: /etc/postgresql/9.3/main/postgresql.conf

Внутри есть строка:

 port = 5432

  

Чтобы изменить число, необходимо перезапустить postgresql, чтобы оно вступило в силу.

ответ дан 6 апр 2015 в 21:11

Eric Leschinski's user avatar

Эрик Лещинский

96 золотых знаков
418 серебряных знаков
335 бронзовых знаков

С терминала вы можете сделать:

Я бы посоветовал прочитать документацию с исчерпывающим списком всех команд, используя:

ответ дан 7 нояб. 2019 в 6:39

Vinayak Mishra's user avatar

ответ дан 26 июля 2019 в 12:35

Intra's user avatar

1 золотой значок
2 серебряных значка
7 бронзовых знаков

Чтобы найти номер порта, вы можете запустить эту команду (при условии, что вы находитесь на локальном хосте)

 select setting from pg_settings where name='port';

  

ответил 26 авг 2021 в 21:02

A-Sharabiani's user avatar

17 золотых знаков
115 серебряных знаков
128 бронзовых знаков

 SELECT CURRENT_USER usr, :'HOST' host, inet_server_port() port;

  

Здесь используется встроенная переменная HOST psql, описанная здесь

И функции системной информации postgres, документированные здесь

ответ дан 28 марта 2018 в 10:52

professorcolm's user avatar

 service postgresql status

  

возвращает:
10/основной (порт 5432): онлайн

Я использую Ubuntu 18.04

ответ дан 29 апр 2019 в 16:55

Marcos Galigarcia's user avatar

 SELECT boot_val,reset_val FROM pg_settings WHERE name='listen_addresses';;

  

ответ дан 17 авг. 2022 в 15:48

t7e's user avatar

1 золотой значок
4 серебряных значка
9 бронзовых знаков

зайдите в «Терминал» и просто наберите

 service postgres status

  

В результатах вы можете получить порт
подробности Running postgres details

В моем случае он работает на порту «5432» (по умолчанию).
Я использую CentOS 7. Надеюсь, это поможет.

ответ дан 8 ноября 2017 в 7:43

Rahal Kanishka's user avatar

Поскольку вы сказали, что у вас (у вас) работает postgresql, я предполагаю:

  • вы используете Linux,
  • иметь хотя бы одну учетную запись с привилегиями суперпользователя и/или иметь доступ к роли postgres, и
  • (просто ради интереса) вам нужно получить доступ к обоим значениям в рамках одной транзакции из самой базы данных

/* SQL-КОД */

 CREATE TEMP TABLE tmp ( hostname text, port bigint ) ON COMMIT DROP;

COPY tmp FROM PROGRAM $pgm$ printf "$HOSTNAME\t$(i=1 && until [[ "$(psql -U postgres -p $i -qt -c "SELECT 'true'" 2>/dev/null | sed -e '$d' | xargs | tr -d "\n")" == "true" ]]; do i=$(($i+1)) && if [ $i == "65535" ]; then break ; fi ; done && echo $i)"$pgm$ ( format 'text', delimiter '\t' );

SELECT host, port FROM tmp;

  

даст вам и то, и другое: выполнит код, разделенный $pgm$, как сценарий оболочки и вернет значения в стандартный ввод COPY API на стороне сервера. К сожалению, этому методу требуется целевая таблица для вызова серверной оболочки.

Если вам нужна возможность вызова без временной таблицы, т.е. как вызов функции, попробуйте реализовать вышеуказанную оболочку на языке plsh
.

ответ дан 29 июн 2022 в 0:42

JJ Ward's user avatar

Я думаю, что PostgreSQL не предоставляет встроенной функции для получения имени хоста сервера, поэтому нам может потребоваться написать расширение для получения информации с сервера.

Я обнаружил, что существует расширение PostgreSQL pg-hostname
который может получить имя хоста с сервера.

Когда мы установили расширение, мы можем включить его и запросить информацию с помощью inet_server_port
& hostname
функция.

 CREATE EXTENSION hostname;

SELECT hostname(),inet_server_port();

  

ответ дан 5 авг. 2022 в 3:52

D-Shih's user avatar

6 золотых значков
32 серебряных знака
52 бронзовых знака

Я использую такой раствор. Никаких плагинов не требуется. Временные таблицы не нужны. Только для Юникса.

 select pg_read_file('/etc/hostname') as hostname, setting as port from pg_settings where name='port';

  

ответил 31 окт. 2022 в 17:33

Arty's user avatar

1 золотой значок
8 серебряных знаков
17 бронзовых знаков

Щелкните правой кнопкой мыши свой SQL-сервер. У меня PostgresSQL 13
и выберите свойства -> соединение. Здесь есть:

  • имя хоста
  • идентификатор порта
  • Имя пользователя.

ответ дан 24 ноя 2022 в 1:45

JQTs's user avatar

2 серебряных значка
11 бронзовых знаков

Подключение к базе данных

Альтернативный способ указания параметров подключения – в conninfo

строка или URI
, который используется вместо имени базы данных. Этот механизм дает вам очень широкий контроль над соединением. Например:

 $  psql "service=myservice sslmode=require"
  

$  psql postgresql://dbmaster:5433/mydb?sslmode=require
  

  

Если соединение не может быть установлено по какой-либо причине (например, недостаточные привилегии, сервер не работает на целевом хосте и т. д.), вернет ошибку и завершится.

Если и стандартный ввод, и стандартный вывод являются терминалом, то для кодировки клиента устанавливается значение , что позволяет определить соответствующую кодировку клиента из настроек локали ( LC_CTYPE
переменная среды в системах Unix). Если это не сработает должным образом, кодировку клиента можно переопределить с помощью переменной среды PGCLIENTENCODING.
.

Ввод SQL-команд

 $  psql testdb
  

psql (16.0)
Чтобы получить помощь, введите «help».

testdb=>
  

Всякий раз, когда выполняется команда, также опрашиваются события асинхронного уведомления, генерируемые LISTEN

и NOTIFY

.

Расширенные функции

Переменные

предоставляет функции замены переменных, аналогичные обычным командным оболочкам Unix. Переменные — это просто пары имя/значение, где значением может быть любая строка любой длины. Имя должно состоять из букв (в том числе нелатинских), цифр и символов подчеркивания.

Чтобы установить переменную, используйте метакоманду \set
. Например,

 testdb=>  \set foo bar
  

  

устанавливает переменную foo
к значению bar
. Чтобы получить содержимое переменной, поставьте перед именем двоеточие, например:

 testdb=>  \echo :foo
  

бар
  

Это работает как с обычными командами SQL, так и с метакомандами; более подробно см. SQL-интерполяция
, ниже.

Если ты позвонишь \set
без второго аргумента переменной присваивается значение пустой строки. Чтобы снять (т. е. удалить) переменную, используйте команду \unset
. Чтобы показать значения всех переменных, позвоните \set
без всяких аргументов.

Примечание

Аргументы \set
подчиняются тем же правилам замены, что и другие команды. Таким образом, вы можете создавать интересные ссылки, такие как \set :foo 'something'
и получить или славу, или славу соответственно. К сожалению (или к счастью?), с этими конструкциями невозможно сделать что-либо полезное. С другой стороны, \set bar :foo
это совершенно правильный способ копирования переменной.

Некоторые из этих переменных обрабатываются специальным образом. Они представляют собой определенные настройки параметров, которые можно изменить во время выполнения, изменив значение переменной, или, в некоторых случаях, представляют изменяемое состояние . По соглашению имена всех специально обрабатываемых переменных состоят из заглавных букв ASCII (и, возможно, цифр и символов подчеркивания). Чтобы обеспечить максимальную совместимость в будущем, избегайте использования таких имен переменных в своих целях.

Переменные, управляющие поведением объекта, обычно нельзя сбросить или установить недопустимые значения. Ан \unset
Команда разрешена, но интерпретируется как установка переменной значения по умолчанию. А \set
команда без второго аргумента интерпретируется как присвоение переменной значения on
, для управляющих переменных, которые принимают это значение, и отклоняется для других. Также управляющие переменные, принимающие значения on
и off
также будет принимать другие распространенные варианты написания логических значений, например true
и false
.

Специально обработанными переменными являются:

#

Примечание

В режиме автофиксации вы должны явно отменить любую неудачную транзакцию, введя ABORT
или ROLLBACK
. Также имейте в виду, что если вы выйдете из сеанса без фиксации, ваша работа будет потеряна.

Примечание

Режим автофиксации является традиционным поведением, но отключение автофиксации ближе к спецификации SQL. Если вы предпочитаете автофиксацию, вы можете установить ее в общесистемном psqlrc
файл или ваш ~/.psqlrc
файл.

#

Определяет, какой регистр букв использовать при заполнении ключевого слова SQL. Если установлено значение lower
или upper
, законченное слово будет в нижнем или верхнем регистре соответственно. Если установлено значение preserve-lower
или preserve-upper
(по умолчанию), завершенное слово будет в случае уже введенного слова, но слова, завершенные без ввода чего-либо, будут в нижнем или верхнем регистре соответственно.

#

Имя базы данных, к которой вы в данный момент подключены. Это значение устанавливается каждый раз при подключении к базе данных (включая запуск программы), но его можно изменить или отключить.

#

Если установлено значение all
, все непустые строки ввода выводятся на стандартный вывод по мере их чтения. (Это не относится к строкам, читаемым в интерактивном режиме.) Чтобы выбрать такое поведение при запуске программы, используйте переключатель -a
. Если установлено значение queries
, выводит каждый запрос в стандартный вывод по мере его отправки на сервер. Переключатель для выбора этого поведения: -e
. Если установлено значение errors
, то в стандартном выводе ошибок отображаются только невыполненные запросы. Переключатель этого поведения: -b
. Если установлено значение none
(по умолчанию), то запросы не отображаются.

#

Когда для этой переменной установлено значение on
и команда обратной косой черты запрашивает базу данных, сначала отображается запрос. Эта функция поможет вам изучить внутреннее устройство и обеспечить аналогичную функциональность в ваших собственных программах. (Чтобы выбрать это поведение при запуске программы, используйте переключатель -E
.) Если вы установите для этой переменной значение noexec
, запросы просто отображаются, но фактически не отправляются на сервер и не выполняются. Значение по умолчанию: off.
.

#

Текущая кодировка набора символов клиента. Устанавливается каждый раз при подключении к базе данных (включая запуск программы) и при изменении кодировки с помощью \encoding.
, но его можно изменить или отключить.

#

true
если последний запрос SQL не удался, false
если это удалось. См. также SQLSTATE
.

#

Если для этой переменной установлено целое значение больше нуля, результаты SELECT
запросы извлекаются и отображаются группами по такому количеству строк, а не по умолчанию, когда весь набор результатов собирается перед отображением. Поэтому используется только ограниченный объем памяти, независимо от размера результирующего набора. При включении этой функции обычно используются настройки от 100 до 1000. Имейте в виду, что при использовании этой функции запрос может завершиться неудачно после отображения некоторых строк.

Совет

Хотя с помощью этой функции вы можете использовать любой выходной формат, по умолчанию aligned
формат имеет тенденцию выглядеть плохо, потому что каждая группа FETCH_COUNT
строки будут форматироваться отдельно, что приведет к различной ширине столбцов в группах строк. Другие форматы вывода работают лучше.

#

Если для этой переменной установлено значение true
, сведения о методе доступа к таблице не отображаются. В основном это полезно для регрессионных тестов.

#

Если для этой переменной установлено значение true
, сведения о методе сжатия столбцов не отображаются. В основном это полезно для регрессионных тестов.

#

Если для этой переменной установлено значение ignorespace
, строки, начинающиеся с пробела, не заносятся в список истории. Если установлено значение ignoredups
, строки, соответствующие предыдущей строке истории, не вводятся. Значение ignoreboth
сочетает в себе два варианта. Если установлено значение none
(по умолчанию), все строки, прочитанные в интерактивном режиме, сохраняются в списке истории.

Примечание

Эта функция была бесстыдно заимствована из .

#

Имя файла, которое будет использоваться для хранения списка истории. Если не установлено, имя файла берется из PSQL_HISTORY
переменная среды. Если это значение также не установлено, значение по умолчанию — ~/.psql_history.
, или %APPDATA%\postgresql\psql_history
в Windows. Например, поставив:

 \set HISTFILE ~/.psql_history-:DBNAME
  

в ~/.psqlrc
приведет к сохранению отдельной истории для каждой базы данных.

Примечание

Эта функция была бесстыдно заимствована из .

#

Максимальное количество команд, сохраняемых в истории команд (по умолчанию 500). Если установлено отрицательное значение, ограничение не применяется.

Примечание

Эта функция была бесстыдно заимствована из .

#

Хост сервера базы данных, к которому вы в данный момент подключены. Это значение устанавливается каждый раз при подключении к базе данных (включая запуск программы), но его можно изменить или отключить.

#

Если установлено значение 1 или меньше, отправка EOF
символ (обычно +) для интерактивного сеанса завершит работу приложения. Если установлено большее числовое значение, то столько же последовательных EOF
символы необходимо вводить, чтобы интерактивный сеанс завершился. Если переменной присвоено нечисловое значение, она интерпретируется как 10. Значение по умолчанию — 0.

Примечание

Эта функция была бесстыдно заимствована из .

#
#

Основное сообщение об ошибке и связанный с ним код SQLSTATE для последнего неудачного запроса в текущем сеансе или пустая строка и 00000
если в текущем сеансе не произошло ошибок.

#
#

По умолчанию обработка команды продолжается после ошибки. Когда для этой переменной установлено значение on
, обработка немедленно прекратится. В интерактивном режиме возврат в командную строку; в противном случае произойдет выход с кодом ошибки 3, чтобы отличить этот случай от условий фатальной ошибки, о которых сообщается с кодом ошибки 1. В любом случае все запущенные в данный момент сценарии (сценарий верхнего уровня, если таковой имеется, и любые другие сценарии, которые он возможно, был вызван) будет немедленно прекращено. Если командная строка верхнего уровня содержит несколько команд SQL, обработка остановится на текущей команде.

#

Порт сервера базы данных, к которому вы в данный момент подключены. Это значение устанавливается каждый раз при подключении к базе данных (включая запуск программы), но его можно изменить или отключить.

#

Они определяют, как должны выглядеть проблемы с подсказками. См. Подсказка
ниже.

#

Установка этой переменной в on
эквивалентно параметру командной строки -q
. Вероятно, это не слишком полезно в интерактивном режиме.

#

Число строк, возвращенных или затронутых последним SQL-запросом, или 0, если запрос завершился неудачно или не было сообщено о количестве строк.

all # -a

queries
errors Номер версии сервера в виде строки, например none.
,

или

, и в числовой форме, например
или

. Они устанавливаются каждый раз при подключении к базе данных (включая запуск программы), но их можно изменить или отключить. -b

-e

# on

-E
off

если последняя команда оболочки не удалась,
если это удалось. Это относится к командам оболочки, вызываемым через

,

,

,

, и \encoding
метакоманды, а также обратные кавычки (

) расширение. Обратите внимание, что для

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

.

noexec

# true

false
SQLSTATE Статус выхода, возвращаемый последней командой оболочки. 0–127 представляют коды завершения программы, 128–255 указывают на завершение по сигналу, а -1 указывает на невозможность запуска программы или получения статуса ее завершения. Это относится к командам оболочки, вызываемым через

,

,

,

, и

метакоманды, а также обратные кавычки (

) расширение. Обратите внимание, что для
, эта переменная обновляется, когда выходной канал закрывается следующим

команда. См. также

.
#

Когда для этой переменной установлено значение off
, только последний результат комбинированного запроса ( \;
) отображается вместо всех из них. По умолчанию on
. Поведение «выключено» предназначено для совместимости со старыми версиями psql.

#

Этой переменной можно установить значения never
, errors
, или always
контролировать, будет ли CONTEXT
поля отображаются в сообщениях от сервера. По умолчанию errors
(это означает, что контекст будет отображаться в сообщениях об ошибках, но не в уведомлениях или предупреждениях). Эта настройка не имеет эффекта, если VERBOSITY
установлено на terse
или sqlstate
. ( См. также \errverbose
, для использования, когда вам нужна подробная версия только что полученной ошибки.)

#

Установка этой переменной в on
эквивалентно параметру командной строки -S
.

#

Установка этой переменной в on
эквивалентно параметру командной строки -s
.

#

Код ошибки (см. Приложение А
), связанный с ошибкой последнего SQL-запроса, или 00000
если это удалось.

#
#

Этой переменной можно установить значения default
, verbose
, terse
, или sqlstate
контролировать подробность отчетов об ошибках. ( См. также \errverbose
, для использования, когда вам нужна подробная версия только что полученной ошибки.)

#

Эти переменные устанавливаются при запуске программы для отображения версии, соответственно, в виде подробной строки или короткой строки (например, 9.6.2
, 10.1
, или 11beta1
) и число (например, 90602
или 100001
). Их можно изменить или отключить.

SQL
Интерполяция

Ключевой особенностью переменных является то, что их можно подставлять в обычный SQL
операторы, а также аргументы метакоманд. Кроме того, предоставляет средства для обеспечения правильного заключения в кавычки значений переменных, используемых в качестве литералов и идентификаторов SQL. Синтаксис интерполяции значения без кавычек заключается в добавлении к имени переменной двоеточия ( :
). Например,

 testdb=>  \set foo 'my_table'
  

testdb=>  SELECT * FROM :foo;
  

  

запросит таблицу my_table
. Обратите внимание, что это может быть небезопасно: значение переменной копируется буквально, поэтому оно может содержать несбалансированные кавычки или даже команды обратной косой черты. Вы должны убедиться, что то, куда вы это поместите, имеет смысл.

 testdb=>  \set foo 'my_table'
  

testdb=>  SELECT * FROM :"foo";
  

  

Интерполяция переменных не будет выполняться внутри кавычек SQL
литералы и идентификаторы. Поэтому конструкция типа ':foo'
не работает для создания литерала в кавычках из значения переменной (и было бы небезопасно, если бы это работало, поскольку он не будет правильно обрабатывать кавычки, встроенные в значение).

Одним из примеров использования этого механизма является копирование содержимого файла в столбец таблицы. Сначала загрузите файл в переменную, а затем интерполируйте значение переменной как строку в кавычках:

 testdb=>  \set content `cat my_file.txt`
  

testdb=>  INSERT INTO my_table VALUES (:'content');
  

  

(Обратите внимание, что это всё равно не сработает, если \encoding
содержит NUL-байты. не поддерживает встроенные NUL-байты в значениях переменных.)

Поскольку двоеточия могут законно появляться в командах SQL, очевидная попытка интерполяции (то есть
,

, или
) не заменяется, если именованная переменная не установлена ​​в данный момент. В любом случае вы можете заменить двоеточие обратной косой чертой, чтобы защитить его от подстановки.

Синтаксис двоеточия для переменных является стандартным true SQL false
для встроенных языков запросов, таких как . Синтаксис двоеточия для срезов массива и приведения типов является расширением, которое иногда может противоречить стандартному использованию. Синтаксис двоеточия и кавычек для экранирования значения переменной как литерала или идентификатора SQL является расширением.

SQLSTATE Подсказка

Вопросы с подсказками можно настроить по своему усмотрению. Три переменные
,

, и

содержат строки и специальные escape-последовательности, описывающие внешний вид приглашения. Подсказка 1 — это обычная подсказка, которая выдается при запросе новой команды. Подсказка 2 выдается, когда во время ввода команды ожидается ввод дополнительных данных, например, если команда не была завершена точкой с запятой или не была закрыта кавычка. Подсказка 3 выдается при запуске SQL
COPY FROM STDIN
команду, и вам нужно ввести значение строки на терминале.

Значение выбранной переменной подсказки печатается буквально, за исключением случаев, когда знак процента ( %
) встречается. В зависимости от следующего символа вместо него заменяется другой текст. Определенные замены:

#
#
#

Номер порта, который прослушивает сервер базы данных.

#
#

Имя текущей базы данных.

#

Нравится %/
, но результат ~
(тильда), если база данных является базой данных по умолчанию.

#
#

Идентификатор процесса серверной части, к которой в данный момент подключен.

#
#
#

Номер строки внутри текущего оператора, начиная с 1.
.

#

Заменяется символ с указанным восьмеричным кодом.

#

Значение переменной name

. См. Переменные
, выше, для подробностей.

#

Выход command

, аналогично обычной замене.

#
 testdb=> \set PROMPT1 '%[%033[1;33;40m%]%n@%/%R%[%033[0m%]%# '
  

приводит к выделению жирным шрифтом ( 1;
) желтый на черном ( 33;40
) подсказка на VT100-совместимых цветных терминалах.

#

Пробелы той же ширины, что и последний вывод PROMPT1
. Это можно использовать как PROMPT2
настройка, так что многострочные операторы выравниваются по первой строке, но нет видимого вторичного приглашения.

Чтобы вставить в подсказку знак процента, напишите %%
. Подсказки по умолчанию: '%/%R%x%# '.
для подсказок 1 и 2 и '>> '
для подсказки 3.

Примечание

Эта функция была бесстыдно заимствована из .

Редактирование командной строки

использует библиотеку или, если она доступна, для удобного редактирования и поиска строк. История команд автоматически сохраняется при выходе и перезагружается при запуске. Введите стрелку вверх или Control-P, чтобы получить предыдущие строки.

SQLSTATE Вы также можете использовать табуляцию для заполнения частично типизированных ключевых слов и имен объектов SQL во многих (но не во всех) контекстах. Например, в начале команды введите

и нажатие TAB заполнит
. Затем введите несколько символов имени таблицы или схемы и нажмите .
заполнит незавершенное имя или предложит меню возможных дополнений, если их несколько. (В зависимости от используемой библиотеки вам может потребоваться нажать

более одного раза, чтобы получить меню.)

Завершение табуляции для имен объектов SQL требует отправки запросов на сервер для поиска возможных совпадений. В некоторых контекстах это может мешать другим операциям. Например, после

выдавать будет поздно \encoding
если между ними выдается запрос на завершение табуляции. Если вам вообще не нужно завершение табуляции, вы можете отключить его навсегда, поместив это в файл с именем

в вашем домашнем каталоге:

$if psql
включить отключить завершение
$endif

(Это не функция, а дополнительная информация. Прочтите ее документацию для получения более подробной информации.)

( true
) Параметр командной строки также может быть полезен для отключения использования для одного запуска . Это предотвращает заполнение табуляции, использование или запись истории командной строки, а также редактирование многострочных команд. Это особенно полезно, когда вам нужно скопировать и вставить текст, содержащий false
персонажи.

Examples

Show the current setting of the parameter DateStyle
:

  SHOW DateStyle;
 DateStyle
-----------
 ISO, MDY
(1 row)
  

Show the current setting of the parameter geqo
:

  SHOW geqo;
 geqo
------
 on
(1 row)
  

Show all settings:

  SHOW ALL;
 name | setting | description
-------------------------+---------+-------------------------------------------------
 allow_system_table_mods | off | Allows modifications of the structure of .
 .
 .
 .
 xmloption | content | Sets whether XML data in implicit parsing .
 zero_damaged_pages | off | Continues processing past damaged page headers.
(196 rows)
  

Synopsis

  SHOW     name  
    

SHOW ALL
  

Compatibility

The SHOW
command is a extension.

Ответов

Порт PostgreSQL по умолчанию — 5432
. Хост, на котором работает база данных, должен быть предоставлен вашим хостинг-провайдером; Я предполагаю, что это будет тот же хост, что и веб-сервер, если он не указан. Обычно это будет настроено как localhost, если ваш веб-сервер и сервер базы данных находятся на одном хосте.

   SELECT *
FROM pg_settings
WHERE name = 'port';
  
  

Эта команда даст вам номер порта postgres

    \conninfo
  
  

В случае, если postgres запущен на сервере Linux, вы также можете использовать следующую команду

   sudo netstat -plunt |grep postgres
  
  

и вы увидите что-то подобное, как это

   tcp        0      0 127.0.0.1:5432          0.0.0.0:*               LISTEN      140/postgres
tcp6       0      0 ::1:5432                :::*                    LISTEN      140/postgres
  
  

, в этом случае номер порта равен 5432, который также является номером порта по умолчанию

select inet_server_port();
предоставляет порт сервера.

Порт postgresql определен в вашем файле postgresql.conf
.

Для меня в Ubuntu 14.04 это: /etc/postgresql/9.3/main/postgresql.conf

Внутри есть строка:

   port = 5432
  
  

Для изменения числа требуется перезапуск postgresql, чтобы он вступил в силу.

Это не-sql-метод. Инструкции даются на самом изображении. Выберите сервер, на котором вы хотите найти информацию, а затем выполните действия.

Изображение 5112

   select inet_server_addr( ), inet_server_port( );
  
  

перейдите в «Терминал» и просто введите

   service postgres status
  
  

В результатах вы можете получить порт
подробнее Изображение 5113

В моем случае он работает на порту «5432» (по умолчанию).

Я использую CentOS 7. Hope это помогает.

Ещё вопросы

Parameters

The name of a run-time parameter. Available parameters are documented in Chapter 20
and on the
reference page. In addition, there are a few parameters that can be shown but not set:

Shows the server’s version number.

Shows the server-side character set encoding. At present, this parameter can be shown but not set, because the encoding is determined at database creation time.

Shows the database’s locale setting for collation (text ordering). At present, this parameter can be shown but not set, because the setting is determined at database creation time.

Shows the database’s locale setting for character classification. At present, this parameter can be shown but not set, because the setting is determined at database creation time.

Show the values of all configuration parameters, with descriptions.

Description

SHOW
will display the current setting of run-time parameters. These variables can be set using the SET
statement, by editing the postgresql.conf
configuration file, through the PGOPTIONS
environmental variable (when using or a -based application), or through command-line flags when starting the postgres
server. See Chapter 20
for details.

Notes

The function current_setting
produces equivalent output; see Section 9.27.1
. Also, the pg_settings

system view produces the same information.

Читайте также:  Фонд Социального страхования по адресу улица Попова, 22, в Удомли, Тверской области
Оцените статью
ФСС Help
Добавить комментарий