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
Просто подключитесь и запустите команду.
Если вы можете подключиться к PostgreSQL с исходного компьютера, вы можете увидеть, какой порт он прослушивает:
ответил 21 июля 2021 в 14:15

3 серебряных значка
16 бронзовых знаков
Сначала найдите процесс «postmaster», родительский для всех остальных процессов PostgreSQL.
Вы можете получить его из postmaster.pid
файл в каталоге данных PostgreSQL, если база данных запущена.
Тогда вы можете получить порт с помощью lsof
. Предполагая, что идентификатор процесса равен 23521, запустите
lsof -P -sTCP:LISTEN -i TCP -a -p 23521
Это покажет вам порт, который прослушивает PostgreSQL.
ответ дан 18 сен 2018 в 13:47

Лауренц Альбе
17 золотых знаков
207 серебряных знаков
265 бронзовых знаков
При работе с базами данных крайне важно получить информацию об имени хоста и номере порта. Это связано с тем, что базе данных Postgres для установления соединения требуется имя хоста и номер порта. Имена хостов указывают местоположение сервера базы данных, а номера портов указывают, как мы можем получить доступ к базе данных.
Эта статья иллюстрирует различные методы поиска имени хоста и номера порта в PostgreSQL.
Как проверить/найти имя хоста и номер порта в PostgreSQL?
В этом посте будут обсуждаться перечисленные ниже методы проверки имени хоста и номера порта:
- Использование \conninfo
- Использование pg_settings
- Использование «inet_server_addr()» и «inet_server_port()»
- Использование файла «postgresql.conf»
Как проверить/найти имя хоста и номер порта с помощью \conninfo?
\conninfo

Как проверить/найти номер порта с помощью pg_settings?
ВЫБРАТЬ * ИЗ pg_settings ГДЕ имя = 'порт';

Как проверить/найти имя хоста и «inet_server_addr()»?
ВЫБЕРИТЕ inet_server_addr() КАК имя хоста;
Указанная функция извлекает « ::1
», что эквивалентно « 127.0.0.1
«:

Как проверить/найти номер порта с помощью «inet_server_port()»?
ВЫБЕРИТЕ inet_server_port() AS portNumber;
Данная функция получает номер порта сервера как « 5432
«:

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

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

Фрагмент вывода показывает, что мы подключены к «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?

3 gold badges
19 silver badges
35 bronze badges
asked Apr 8, 2011 at 17:13
SELECT *
FROM pg_settings
WHERE name = 'port';

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
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.

answered Apr 8, 2011 at 17:18
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
1 gold badge
18 silver badges
16 bronze badges
select inet_server_addr( ), inet_server_port( );
answered Jun 2, 2016 at 19:34
46 silver badges
39 bronze badges

answered Jun 5, 2014 at 15:43
1 gold badge
48 silver badges
91 bronze badges
select inet_server_port();
gives you the port of the server.
ответ дан 10 апр 2014 в 11:20

1 золотой значок
11 серебряных знаков
28 бронзовых знаков
Из терминала вы можете просто создать «кластеры списка postgres»:
pg_lsclusters
Он вернет номер версии Postgres, имена кластеров, порты, статус, владельца, а также расположение ваших каталогов данных и файла журнала.
ответ дан 31 янв. 2021 в 7:14

Порт postgresql определен в вашем postgresql.conf
файл.
Для меня в Ubuntu 14.04 это: /etc/postgresql/9.3/main/postgresql.conf
Внутри есть строка:
port = 5432
Чтобы изменить число, необходимо перезапустить postgresql, чтобы оно вступило в силу.
ответ дан 6 апр 2015 в 21:11

Эрик Лещинский
96 золотых знаков
418 серебряных знаков
335 бронзовых знаков
С терминала вы можете сделать:
Я бы посоветовал прочитать документацию с исчерпывающим списком всех команд, используя:
ответ дан 7 нояб. 2019 в 6:39

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

1 золотой значок
2 серебряных значка
7 бронзовых знаков
Чтобы найти номер порта, вы можете запустить эту команду (при условии, что вы находитесь на локальном хосте)
select setting from pg_settings where name='port';
ответил 26 авг 2021 в 21:02

17 золотых знаков
115 серебряных знаков
128 бронзовых знаков
SELECT CURRENT_USER usr, :'HOST' host, inet_server_port() port;
Здесь используется встроенная переменная HOST psql, описанная здесь
И функции системной информации postgres, документированные здесь
ответ дан 28 марта 2018 в 10:52
service postgresql status
возвращает:
10/основной (порт 5432): онлайн
Я использую Ubuntu 18.04
ответ дан 29 апр 2019 в 16:55

SELECT boot_val,reset_val FROM pg_settings WHERE name='listen_addresses';;
ответ дан 17 авг. 2022 в 15:48
1 золотой значок
4 серебряных значка
9 бронзовых знаков
зайдите в «Терминал» и просто наберите
service postgres status
В результатах вы можете получить порт
подробности 
В моем случае он работает на порту «5432» (по умолчанию).
Я использую CentOS 7. Надеюсь, это поможет.
ответ дан 8 ноября 2017 в 7:43

Поскольку вы сказали, что у вас (у вас) работает 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

Я думаю, что PostgreSQL не предоставляет встроенной функции для получения имени хоста сервера, поэтому нам может потребоваться написать расширение для получения информации с сервера.
Я обнаружил, что существует расширение PostgreSQL pg-hostname
который может получить имя хоста с сервера.
Когда мы установили расширение, мы можем включить его и запросить информацию с помощью inet_server_port
& hostname
функция.
CREATE EXTENSION hostname;
SELECT hostname(),inet_server_port();
ответ дан 5 авг. 2022 в 3:52

6 золотых значков
32 серебряных знака
52 бронзовых знака
Я использую такой раствор. Никаких плагинов не требуется. Временные таблицы не нужны. Только для Юникса.
select pg_read_file('/etc/hostname') as hostname, setting as port from pg_settings where name='port';
ответил 31 окт. 2022 в 17:33

1 золотой значок
8 серебряных знаков
17 бронзовых знаков
Щелкните правой кнопкой мыши свой SQL-сервер. У меня PostgresSQL 13
и выберите свойства -> соединение. Здесь есть:
- имя хоста
- идентификатор порта
- Имя пользователя.
ответ дан 24 ноя 2022 в 1:45

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, если запрос завершился неудачно или не было сообщено о количестве строк.
- или
- . Они устанавливаются каждый раз при подключении к базе данных (включая запуск программы), но их можно изменить или отключить.
-b-e - ,
- ) расширение. Обратите внимание, что для
noexec#
truefalse
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, очевидная попытка интерполяции (то есть
,
, или- Поскольку двоеточия могут законно появляться в командах SQL, очевидная попытка интерполяции (то есть
- ) не заменяется, если именованная переменная не установлена в данный момент. В любом случае вы можете заменить двоеточие обратной косой чертой, чтобы защитить его от подстановки.
- #
- #
- #
Номер порта, который прослушивает сервер базы данных.
- #
- #
Имя текущей базы данных.
- #
Нравится
%/
, но результат~
(тильда), если база данных является базой данных по умолчанию.- #
- #
Идентификатор процесса серверной части, к которой в данный момент подключен.
- #
- #
- #
Номер строки внутри текущего оператора, начиная с
1.
.- #
Заменяется символ с указанным восьмеричным кодом.
- #
Значение переменной
name
. См. Переменные
, выше, для подробностей.- #
Выход
command
, аналогично обычной замене.- #
testdb=> \set PROMPT1 '%[%033[1;33;40m%]%n@%/%R%[%033[0m%]%# '
приводит к выделению жирным шрифтом (
1;
) желтый на черном (33;40
) подсказка на VT100-совместимых цветных терминалах.- #
Пробелы той же ширины, что и последний вывод
PROMPT1
. Это можно использовать какPROMPT2
настройка, так что многострочные операторы выравниваются по первой строке, но нет видимого вторичного приглашения.- использует библиотеку или, если она доступна, для удобного редактирования и поиска строк. История команд автоматически сохраняется при выходе и перезагружается при запуске. Введите стрелку вверх или Control-P, чтобы получить предыдущие строки.
SQLSTATEВы также можете использовать табуляцию для заполнения частично типизированных ключевых слов и имен объектов SQL во многих (но не во всех) контекстах. Например, в начале команды введитеи нажатие TAB заполнит
. Затем введите несколько символов имени таблицы или схемы и нажмите .
заполнит незавершенное имя или предложит меню возможных дополнений, если их несколько. (В зависимости от используемой библиотеки вам может потребоваться нажать
более одного раза, чтобы получить меню.) Завершение табуляции для имен объектов SQL требует отправки запросов на сервер для поиска возможных совпадений. В некоторых контекстах это может мешать другим операциям. Например, после
выдавать будет поздно
\encoding
если между ними выдается запрос на завершение табуляции. Если вам вообще не нужно завершение табуляции, вы можете отключить его навсегда, поместив это в файл с именем- в вашем домашнем каталоге:
$if psql
включить отключить завершение
$endif
(Это не функция, а дополнительная информация. Прочтите ее документацию для получения более подробной информации.)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.
all # -a
queries
errors Номер версии сервера в виде строки, например none.
,
, и в числовой форме, например
или
# on
-E
off
если последняя команда оболочки не удалась,
если это удалось. Это относится к командам оболочки, вызываемым через
,
,
, и \encoding
метакоманды, а также обратные кавычки (
, эта переменная обновляется, когда выходной канал закрывается следующим
команда. См. также
.
Синтаксис двоеточия для переменных является стандартным true SQL false
для встроенных языков запросов, таких как . Синтаксис двоеточия для срезов массива и приведения типов является расширением, которое иногда может противоречить стандартному использованию. Синтаксис двоеточия и кавычек для экранирования значения переменной как литерала или идентификатора SQL является расширением.
SQLSTATE Подсказка
Вопросы с подсказками можно настроить по своему усмотрению. Три переменные , и содержат строки и специальные escape-последовательности, описывающие внешний вид приглашения. Подсказка 1 — это обычная подсказка, которая выдается при запросе новой команды. Подсказка 2 выдается, когда во время ввода команды ожидается ввод дополнительных данных, например, если команда не была завершена точкой с запятой или не была закрыта кавычка. Подсказка 3 выдается при запуске SQL Значение выбранной переменной подсказки печатается буквально, за исключением случаев, когда знак процента ( Чтобы вставить в подсказку знак процента, напишите Эта функция была бесстыдно заимствована из .
,
COPY FROM STDIN
команду, и вам нужно ввести значение строки на терминале.%
) встречается. В зависимости от следующего символа вместо него заменяется другой текст. Определенные замены:%%
. Подсказки по умолчанию: '%/%R%x%# '.
для подсказок 1 и 2 и '>> '
для подсказки 3. Примечание
Редактирование командной строки
( 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-метод. Инструкции даются на самом изображении. Выберите сервер, на котором вы хотите найти информацию, а затем выполните действия.

select inet_server_addr( ), inet_server_port( );
перейдите в «Терминал» и просто введите
service postgres status
В результатах вы можете получить порт
подробнее 
В моем случае он работает на порту «5432» (по умолчанию).
Я использую CentOS 7. Hope это помогает.
Ещё вопросы
Parameters
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.





