소스에서 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
인터넷 검색 후 몇 가지 힌트를 제공하는 유일한 결과는 다음 명령을 실행하라는 메시지를 표시했으며 그 결과는 다음과 같습니다.
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 Exchange 사이트인 경우 Stack Overflow 또는 Programmers로 이동하세요.)
답변1
postmaster
시작 실패 시 오류 메시지 와 netstat
출력에는 TCP 포트를 사용하는 프로세스가 이미 있음이 표시됩니다 5432
. 아마도 PostgreSQL이 시스템의 일부로 이미 설치되어 있을 것입니다. 당신이 가지고 있는지 확인postgresql-9.1패키지가 설치되고 pg_lsclusters
.
port
자체 컴파일된 PostgreSQL을 Ubuntu용으로 사전 패키지된 PostgreSQL 과 나란히 실행하려면 /usr/local/pgsql/data/postgresql.conf
.
반면에 자체 컴파일된 PostgreSQL만 실행하고 기본 포트를 사용하려면 5432
Ubuntu 패키지를 제거하거나 부팅 시 편집을 통해 클러스터를 비활성화할 수 있습니다./etc/postgresql/9.1/main/start.conf