Я пытаюсь установить экземпляр PostgreSQL после его сборки из исходников, но запуск postmaster
демона до запуска кластера базы данных, похоже, не работает. Вот сообщение об ошибке, которое я получил при запуске:
postgres@Home:~$ /usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/data
LOG: could not bind IPv4 socket: Address already in use
HINT: Is another postmaster already running on port 5432? If not, wait a few seconds
and retry.
WARNING: could not create listen socket for "localhost"
FATAL: could not create any TCP/IP sockets
После поисков в Google единственный результат, который мне удалось найти и который дал мне некоторые подсказки, — это выполнение следующих команд, вывод которых приведен ниже:
postgres@Home:~$ lsof -i :5432
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
postgres 1169 postgres 3u IPv4 1998 0t0 TCP localhost:postgresql (LISTEN)
postgres@Home:~$ netstat -an|grep :5432
tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN
Что приводит меня к мысли, что соединение, к которому postmaster
пытается прицепиться демон, на самом деле доступно. Есть идеи, что может быть причиной?
И если вам интересно, я использую pgsql 9.2.3. (Кроме того, пожалуйста, переместите это на Stack Overflow или Programmers, если это не тот сайт Stack Exchange, где следует задавать этот вопрос.)
решение1
Сообщение об ошибке при postmaster
неудачном запуске и netstat
вывод показывают, что уже есть процесс, который использует 5432
порт TCP. Вероятно, это PostgreSQL, уже установленный как часть вашей системы. Посмотрите, есть ли у васpostgresql-9.1пакет установлен, и вывод pg_lsclusters
.
Если вы хотите запустить собственную, самостоятельно скомпилированную версию PostgreSQL параллельно с предустановленной для Ubuntu, вам необходимо будет изменить port
запись конфигурации в вашем файле /usr/local/pgsql/data/postgresql.conf
.
Если же вы хотите, чтобы работал только ваш самостоятельно скомпилированный PostgreSQL и использовал порт по умолчанию 5432
, вы можете либо удалить пакет Ubuntu, либо отключить кластер при загрузке, отредактировав/etc/postgresql/9.1/main/start.conf