PostgreSQL 9.3이 Ubuntu에서 시작되지 않는 이유는 무엇입니까?


13

Ubuntu 12.04 및 13.04를 실행하는 2 개의 VM에있는 APT 저장소에서 PostgreSQL 9.3을 성공적으로 설치했지만 Ubuntu 12.04를 실행하는 호스트 컴퓨터에 제대로 설치할 수는 없습니다.

설치 (이번)는 괜찮은 것처럼 보이지만 이해할 수없는 오류가있을 수 있습니다.

* No PostgreSQL clusters exist; see "man pg_createcluster"
Setting up postgresql-9.3 (9.3.0-2.pgdg12.4+1) ...
Creating new cluster 9.3/main ...
  config /etc/postgresql/9.3/main
  data   /var/lib/postgresql/9.3/main
  locale en_US.UTF-8
  port   5432
update-alternatives: using /usr/share/postgresql/9.3/man/man1/postmaster.1.gz to provide /usr/share/man/man1/postmaster.1.gz (postmaster.1.gz) in auto mode.

그런 다음 PostgreSQL 사용자로 자신을 추가하려고 시도하지만 다음과 같은 결과가 나타납니다.

createuser: could not connect to database postgres: could not connect to server: No such file or directory
    Is the server running locally and accepting
    connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?

시스템 모니터에서 PostgreSQL이 실행되지 않고 / var / run / postgresql / 폴더에 파일이 없습니다 ... 완전히 비어 있습니다.

편집 : VM에는 / var / run / postgresql /에 9.3-main.pid라는 파일이 있습니다.

/ var / log / postgresql에있는 호스트 시스템 로그 파일에 아무것도 없습니다.

그래서 ... 내 VM에서 진행되지 않는 것은 무엇입니까? 내가 말했듯이 PostGIS 및 PGAdmin을 포함한 VM의 다른 설치는 완벽했습니다 ...이 호스트 시스템이 왜 통과하지 못하는지 모릅니다 ...


실제로 /var/run/postgresql디렉토리가 있습니까? 성공적인 설치 후 한 단계에서 해당 폴더가 컴퓨터에 없습니다. 구성은 사용해야하는 디렉토리에 대해 무엇을 말합니까?
Colin 't Hart

@ Colin'tHart 나는 그 디렉토리를 가지고 있지만 ... 그 안에는 아무것도 없지만 ... VM에는 9.3-main.pid라는 파일이 있습니다. 그 구성 정보는 어디에서 찾을 수 있습니까?
DPSSpatial

postgresql.conf위의 구성 디렉토리에서는입니다 /etc/postgresql/9.3/main. 또한 로그 파일을보아야합니다 /var/log/postgresql.
Colin 't Hart

@ Colin'tHart 로그 파일이 비어 있습니다 ... 설정 파일-그리고 이것이 당신이 생각하는 것입니다-말합니다 # external_pid_file이 명시 적으로 설정되어 있지 않으면 추가 PID 파일이 작성되지 않습니다. external_pid_file = '/var/run/postgresql/9.3-main.pid'
DPSSpatial

해당 디렉토리에 소켓 파일이 있습니까, 아니면 완전히 비어 있습니까?
Colin 't Hart

답변:


16

PostgreSQL을 설치할 때 내 로캘 설정이 제대로 구성되지 않았습니다. 제거 및 재설치는 도움이되지 않았습니다. 나는 여기의 지시를 따랐고 그것은 나를 위해 속임수를 썼다.

링크 된 정보의 필수 부분은 다음과 같습니다.

문제는 다음과 같이 나타납니다.

warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
...
are supported and installed on your system.

첫 번째는 다음을 실행하여 해결하기가 매우 쉽습니다.

#dpkg-reconfigure locales

... 그리고 선호하는 로케일을 선택하십시오.

그러나 그 후에도 PostgreSQL은 여전히 ​​시작을 거부했습니다. 이는 설치 프로세스가 설치시 클러스터를 작성하려고했지만 잘못된 로케일로 인해 수행되지 않았기 때문입니다. 따라서 다음을 실행하여이 단계를 다시 실행해야합니다.

#pg_createcluster 9.3 main --start

(PostgreSQL 9.3 버전의 경우)

그 단계 후에 PostgreSQL은 다음을 통해 완벽하게 시작됩니다

#/etc/init.d/postgresql start

2
내 목숨을 구했습니다. 로케일을 수정해도 제거 및 재설치가 도움이되지 않는다는 것은 정말 짜증납니다. 이것은 내 인생의 2 시간을 낭비했다 :(
Escher

경우에 pg_createcluster클러스터가 이미 먼저 드롭 할 필요가 존재 함을 알려줍니다 (이 그래서 당신이 백업을 만들어, 그 안에 모든 데이터가 삭제됩니다) pg_dropcluster 9.3 main.
Florian Brucker

6

다행히도이 문제를 이미 해결했지만 다른 소스가있는 비슷한 문제가 발생하고 있으며 여전히 문제가있는 경우 내 경험이 도움이 될 수 있습니다.

우분투에서 9.3에 대한 내 문제는 / dir의 임시 디렉토리 인 소켓 디렉토리와 관련이 있습니다. 기본적으로, init.d 스크립트는 / run / postgresql에서 시작 동작 중에 소켓 디렉토리가 존재하지 않는 경우 소켓 디렉토리를 생성하도록 관리합니다. 이것은 항상 재부팅 후 상태가됩니다.

그러나 문제는 소켓 디렉토리가 존재하지 않으면 시작 조치를 실행하기 전에 init.d 스크립트가 종료된다는 것입니다. 이는 소켓 디렉토리없이 pg_lsclusters 호출이 실패하여 시작 조치가 소켓 디렉토리를 작성하지 못하게하기 때문입니다.

최고의 솔루션이 무엇인지 알지 못했지만 시작 동작에서 pg_lsclusters를 호출하기 전에 소켓 디렉토리를 만드는 논리를 재배치하면 문제없이 재부팅 후 서버를 시작할 수 있습니다.

다음은 소켓 디렉토리 작성을 처리하는 시작 조치 부분입니다.

# create socket directory
if [ -d /var/run/postgresql ]; then
  chmod 2775 /var/run/postgresql
else
  install -d -m 2775 -o postgres -g postgres /var/run/postgresql
  [ -x /sbin/restorecon ] && restorecon -R /var/run/postgresql || true
fi

근본 원인이 분명 해지면 업데이트를 게시 할 것입니다. 왜냐하면 이것이 예상되는 동작 일 수 없기 때문입니다.

추가:

나는이 문제에 부딪친 이유는 unix_socket_directories에 대해 좋은 값을 구성하지 않았기 때문이라고 생각합니다 . 9.2에서이 구성 옵션은 unix_socket_directory로 사용되었으며 unix_socket_directories로 전환하지 않고 제거했습니다. unix_socket_directories에 대한 값을 설정했기 때문에 서버 시작에 아무런 문제가 없었습니다.


감사합니다 @ tdg5 !!! 나는 이것을 해결하지 못했지만 내 컴퓨터에 몇 가지 잘못된 설치가 있다고 생각합니다. PostgreSQL Apt Repository에서 새로운 우분투 설치에 설치하면 문제가 해결되었습니다.
DPSSpatial

3
@mapBaker-특정 상황에서 PG 9.3 시작 문제의 근본 원인을 포함하도록 응답을 업데이트했습니다. 아마도 그것은 당신에게도 도움이 될 것입니다.
tdg5

1
재부팅 후 내 PG9.3이 시작되지 않았습니다. "unix_socket_directories = '/ var / run / postgresql'"줄을 9.3의 postgresql.conf에 추가하면 해결되었습니다. 감사합니다
alfonx 2016 년

감사! 잠시 동안이 작업을 해 왔으며이 덩어리를 발견하게되어 기쁩니다!
Serban Tanasa

3

소켓 파일에 몇 가지 문제가 있습니다. 귀하의 경우 /var/run/postgresql/.s.PGSQL.5432

/ var / run / postgresql 디렉토리가 존재하고 postgresql을 시작하기 전에 쓰기 가능한지 확인하십시오. 자세한 정보는이 토론을 참조하십시오. . .

또한 use -h 플래그를 연결할 때 :

psql -h localhost 

그것이 해결되는지 확인하십시오.


1

이것은 우분투의 문제를 해결하는 것으로 보입니다.

postgresql.conf를 편집하십시오 :

unix_socket_directories='/var/run/postgresql

이제 해 service postgresql start


1

PSQL의 새로운 기능이지만 start.conf를 편집하여 문제를 해결했습니다. 서버를 수동으로 관리하기 위해 "자동"설정에 주석을 달았지만 자동, 수동 또는 비활성화 된 값이 필요합니다.

EGD.


1

내 측면에서 시작 스크립트가 잘못되었습니다. 구성 파일은 /etc/postgresql/9.3/main 에 설치되어 있지만 /usr/share/postgresql-common/init.d-functions 스크립트 가 검색 중입니다.

for c in /etc/postgresql/"$2"/*; do 

이 줄을

for c in /etc/postgresql/"$2"/main; do

-2

모두,

약간의 파고 후에 나는 (a) 해결책을 찾았습니다.

http://ubuntuforums.org/showthread.php?t=869080

다음은 이러한 지침을 포함했습니다.

터미널에서 실행하십시오.

sudo mkdir -p /usr/local/pgsql/data
sudo chown -R postgres:postgres /usr/local/pgsql/
sudo su - postgres
cd /usr/lib/postgresql/9.3/bin/
./initdb -D /usr/local/pgsql/data
./postgres -D /usr/local/pgsql/data

이제 내 서버가 작동하고 있습니다 !!!

편집 : 다시 시작한 후에도 서버가 여전히 실행 중이 아닙니다 ...

내가 이것을 실행 해야하는 이유에 대한 생각은 높이 평가됩니다!


9.3이 실행 중입니까? 버전 번호는 의심스러운 것 같습니다 ...
dezso

@dezso 죄송합니다 그 명령에 붙여 넣을 때 버전 번호를 변경하는 것을 잊어 버렸습니다 ...이 모두
v9.3에 있습니다

포트를 지정해야 할 수도 있습니다. 기본 포트는 이전 postgres 설치에서 사용됩니다. 새 설치는 대부분 포트 5433을 사용하고 있지만 postgresql 설정 파일을 읽어서 확인할 수 있습니다./etc/postgresql/9.3/main/postgresql.conf
user35581

1
이것은 해결 방법 일 수 있지만 분명히 좋은 해결책은 아닙니다. 이것은 dba.stackexchange.com/a/91511/8099
sorin
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.