서버가 호스트 "localhost"(:: 1)에서 실행 중이고 포트 5432에서 TCP / IP 연결을 허용합니까?


86

먼저 Stack Overflow 및 웹 전체의 기사에서 몇 가지 유사한 질문을 찾았지만 그중 어느 것도 내 문제를 해결하는 데 도움이되지 않았습니다.

이제 문제가 있습니다.

  • 매력처럼 작동하는 Rails 앱이 있습니다.
  • 공동 작업자와 함께 GitHub를 사용하여 함께 작업합니다.
  • 우리는이 mastermvp가지.
  • 최근 git에 Homebrew (Mac)로 버전을 업데이트했습니다 .
  • Foreman을 사용하여 로컬에서 앱을 시작합니다.

이제 로컬에서 앱을 시작하려고하면 다음 오류가 발생합니다.

PG::ConnectionBad at /
could not connect to server: Connection refused
    Is the server running on host "localhost" (::1) and accepting
    TCP/IP connections on port 5432?
could not connect to server: Connection refused
    Is the server running on host "localhost" (127.0.0.1) and accepting
    TCP/IP connections on port 5432?

컴퓨터를 여러 번 재부팅하려고했습니다.

다음 내용도 확인했습니다 /usr/local/var/postgres.

PG_VERSION      pg_dynshmem     pg_multixact    pg_snapshots    pg_tblspc       postgresql.conf
base            pg_hba.conf     pg_notify       pg_stat         pg_twophase     postmaster.opts
global          pg_ident.conf   pg_replslot     pg_stat_tmp     pg_xlog         server.log
pg_clog         pg_logical      pg_serial       pg_subtrans     postgresql.auto.conf

보시다시피 거기에 postmaster.pid파일 이 없습니다 .

이 문제를 어떻게 해결할 수 있는지 아십니까?


의 내용으로 질문을 업데이트 할 수 있습니까 postgresql.conf?
Pavan

답변:


57

배터리가 부족하고 postgresql 서버가 올바르게 종료되지 않았을 가능성이 큽니다.

가장 쉬운 해결 방법은 공식 postgresql 앱을 다운로드하여 실행하는 것입니다. 그러면 서버가 강제로 시작됩니다 ( http://postgresapp.com/ ).


2
답변 해 주셔서 감사합니다. 방금 앱을 다운로드하고 실행했습니다. 내 서버를 시작하기 전에 종료해도 동일한 오류가 발생합니다. 시스템을 종료하지 않으면 "데이터베이스가 존재하지 않습니다"라는 오류 메시지가 나타납니다. 관련이있을 수 있습니까?
Thibaud Clement

데이터베이스가 없으면 rake db : create를 실행해야합니다. 하지만 이것은 관련이 없을 가능성이 큽니다. 방금 repo 또는 이와 비슷한 것을 포크 했습니까? 'rails s'를 사용하여 서버를 시작하기 전에 종료해서는 안됩니다 !! 응용 프로그램은 모든 사용자가 로컬 호스트에서 사이트에 액세스 할 때 실행되어야한다
그레이엄 슬릭

확인. 아니요, 리포지토리를 포크하지 않았습니다. 작업했던 것과 동일한 리포지토리입니다. 그러나 나는 달렸다 git fetch, 아마도 이것이 문제 일 것이다.
Thibaud Clement

git fetch는 데이터베이스를 삭제하지 않습니다. rake db : create를 실행하면 어떻게됩니까?
Graham Slick

1
"배터리 부족"...이게 정확히 일어난 일입니다! : -O
Sagar Ranglani

135

실행 postgres -D /usr/local/var/postgres하면 다음과 같은 내용이 표시됩니다.

 FATAL:  lock file "postmaster.pid" already exists
 HINT:   Is another postmaster (PID 379) running in data directory "/usr/local/var/postgres"?

그런 다음 kill -9 PIDHINT에서 실행

그리고 당신은 잘 가야합니다.


4
내 경우에 가장 좋은 해결책은 내 컴퓨터가 예기치 않게 종료되고 서비스를 다시 시작해도 문제가 해결되지 않는다는 것입니다. 감사합니다!
Paul Nelligan

3
당신은 사제를 사용하고, 경우 brew services start postgres또는 brew services restart postgres트릭 할 수
Mirror318

1
감사합니다! 이 문제를 두 번째로 실행했는데 이것이 해결책이 될 것이라는 것을 어떻게 이해 했습니까?
qasimalbaqali

1
Linux ubuntu dist에 해당하는 솔루션이 있습니까?
tito.300

1
이것은 문제를 해결하기 위해 몇 시간 동안 노력한 후 2019에서 저에게 효과적이었습니다.
Mwangi Kabiru

54

시스템이 예기치 않게 종료 되었기 때문일 가능성이 높습니다.

시험

postgres -D /usr/local/var/postgres

당신은 볼 수 있습니다

FATAL:  lock file "postmaster.pid" already exists
HINT:  Is another postmaster (PID 449) running in data directory "/usr/local/var/postgres"?

그런 다음 시도

kill -9 PID

kill -9 419

그리고 정상적으로 postgres를 시작해야합니다.


예, 시스템이 예기치 않게 종료되어 문제가 해결되었습니다. 감사합니다.
개발

24

postgresql 서버가 다운되었을 수 있으며 솔루션은 실행하는 것처럼 간단 할 수 있습니다.

sudo service postgresql start

나를 위해 문제를 해결했습니다.


16

postgresql (mac)을 실행하는 Ruby on Rails 애플리케이션과 거의 똑같은 오류가 발생했습니다. 이것은 나를 위해 일했습니다.

brew services restart postgresql

14

이것은 내 경우에서 작동했습니다.

brew uninstall postgresql
rm -fr /usr/local/var/postgres/
brew install postgresql

14

이는 예기치 않은 종료로 인해 삭제되지 않은 postgres에 대해 생성 된 pid 파일로 인해 발생할 수 있습니다. 이 문제를 해결하려면이 pid 파일을 제거하십시오.

  1. postgres 데이터 디렉터리를 찾습니다. homebrew를 사용하는 MAC /usr/local/var/postgres/에서는 다른 시스템이 될 수 있습니다./usr/var/postgres/

  2. 다음을 실행하여 pid 파일을 제거하십시오.

    rm postmaster.pid
    
  3. 포스트그레스를 다시 시작하십시오. Mac에서는 다음을 실행합니다.

    brew services restart postgresql
    

고마워! 개인적으로 나는이 방법으로 제거해야 : RM / 사용자 / <사용자 이름> / 라이브러리 / 응용 프로그램 \ 지원 / 포스트 그레스 / var- <versionId> /postmaster.pid
니콜라스 보댕 - Ripert

3

이 명령을 통해 문제를 해결했습니다.

pg_ctl -D /usr/local/var/postgres start

때때로이 오류가 발생할 수 있습니다.

pg_ctl: another server might be running; trying to start server anyway

따라서 다음 명령을 실행 한 다음 위에 제공된 첫 번째 명령을 실행하십시오.

pg_ctl -D /usr/local/var/postgres stop

2

Linux에서 Postgresql을 다시 시작하려면 다음 명령을 사용해야합니다.

/etc/init.d/postgresql restart


1

이것은 나를 위해 일했습니다.

sudo lsof -i :<port_number>

그 후 현재 프로세스에 연결된 PID를 표시합니다.

그 실행 후 sudo kill -9 <PID>

그래도 작동하지 않으면 user8376606이 제공하는 솔루션을 시도해보십시오. 확실히 작동합니다!


1

먼저 시도했습니다

lsof -wni tcp : 5432 그러나 PID 번호는 표시되지 않습니다.

두 번째 시도

Postgres -D / usr / local / var / postgres 및 서버가 수신 중임을 보여줍니다.

그래서 모든 포트를 다시 복원하기 위해 Mac을 다시 시작했으며 저에게 효과적이었습니다.


1

들어 부두 노동자의 사용자 : 내 경우에는 그것은 과도한 고정 표시기 이미지 크기에 의해 발생했다. 다음 prune명령을 사용하여 사용하지 않는 데이터를 제거 할 수 있습니다 .

docker system prune --all --force --volumes

경고 : 설명서에 따라 ( docker system prune --help) :

다음을 제거합니다.

  • 중지 된 모든 컨테이너
  • 하나 이상의 컨테이너에서 사용하지 않는 모든 네트워크
  • 매달린 모든 이미지
  • 모든 매달린 빌드 캐시

1

나의 경우에는

  1. postgresql.conf 파일에서 포트를 변경했습니다.
  2. postgresql 서비스를 다시 시작하십시오.

실행 => service.msc => 다시 시작

  1. 이제 다시 시도

0

Windows에서이 문제가 자주 발생합니다. 문제를 해결 한 방법은 서비스입니다.-PostgreSQL Database Server 8.3을 클릭합니다.-두 번째 탭 "로그인"을 클릭하고, 첫 번째 줄 "로컬 시스템 계정"을 선택합니다.


0

PostgreSQL 앱을 중지하는 경우에도 동일한 오류가 발생합니다. 다시 시작하면됩니다. (PostgreSQL 11)


0

나는 같은 문제에 직면했고 postgresql 서버를 시작할 수 없었고 암호를 입력 한 후에도 내 db에 액세스 할 수 없었으며 가능한 모든 방법을 수행했습니다.

이 솔루션은 저에게 효과적이었습니다.

Ubuntu 사용자의 경우 : 명령 줄을 통해 다음 명령을 입력합니다.

1.service --status-all (모든 서비스 및 해당 상태의 목록을 제공합니다. 여기서 "+"는 실행 중이고 "-"는 서비스가 더 이상 실행되지 않음을 나타냄)

postgresql 상태를 확인하고 "-"이면 다음 명령을 입력합니다.

2. systemctl start postgresql (서버를 다시 시작)

브라우저에서 postgresql 페이지를 새로 고치면 작동합니다.

Windows 사용자의 경우 :

서비스 목록을 볼 수있는 서비스를 검색하고 postgresql을 마우스 오른쪽 버튼으로 클릭하고 시작을 클릭하면 서버가 완벽하게 작동합니다.


0

1 단계:

cd /etc/postgresql/12/main/

명명 된 파일 열기 postgresql.conf

sudo nano postgresql.conf

이 줄을 그 파일에 추가

listen_addresses = '*'

그런 다음 이름이 지정된 파일을 엽니 다. pg_hba.conf

sudo nano pg_hba.conf

이 줄을 해당 파일에 추가하십시오.

host  all  all 0.0.0.0/0 md5

암호화 된 암호로 모든 사용자의 모든 데이터베이스에 액세스 할 수 있습니다.

서버를 다시 시작하십시오

sudo /etc/init.d/postgresql restart

0

Django 애플리케이션을 PostgreSQL에 연결하려고 할 때 비슷한 문제가 발생했습니다. 데이터베이스 .

내가 쓴 Dockerfile설정에 대한 지침과 함께 장고 프로젝트가 설치 지침에 다음 의 PostgreSQL을 실행 장고 에 서버를 내docker-compose.yml .

docker-compose-yml.

services:
  postgres:
    image: "postgres:latest"
    environment:
      - POSTGRES_DB=abc
      - POSTGRES_USER=abc
      - POSTGRES_PASSWORD=abc
    volumes:
      - pg_data:/var/lib/postgresql/data/
  django:
    build: .
    command: python /code/manage.py runserver 0.0.0.0:8004
    volumes:
      - .:/app
    ports:
      - 8004:8004
    depends_on:
      - postgres 

불행히도 내가 실행할 때마다 docker-compose up같은 오류가 발생했습니다. 팝업에 사용됩니다.

그리고 이것이 내 데이터베이스가 Django 에서 정의 된 방법 settings.py입니다.

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'abc',
        'USER': 'abc',
        'PASSWORD': 'abc',
        'HOST': '127.0.0.1',
        'PORT': '5432',
        'OPTIONS': {
            'client_encoding': 'UTF8',
        },
    }
} 

그래서 결국 저는 docker-compose 네트워킹 을 사용했습니다. 즉 , 서비스로 정의 된 host데이터베이스를 변경 하면 놀라운 일 postgresdocker-compose.yml할 수 있습니다.

그래서 Replacing 'HOST': '127.0.0.1' => 'HOST': 'postgres' 는 저에게 놀라운 일을했습니다.

교체 후 이것이 데이터베이스 구성의 settings.py모습입니다.

DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.postgresql',
            'NAME': 'abc',
            'USER': 'abc',
            'PASSWORD': 'abc',
            'HOST': 'postgres',
            'PORT': '5432',
            'OPTIONS': {
                'client_encoding': 'UTF8',
            },
        }
    } 

0

제 경우에는 데이터베이스를 postgres (제 생산)에서 개발에 사용했던 sqlite3로 다시 변경하는 것을 잊었습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.