¿El servidor se ejecuta en el host “localhost” (:: 1) y acepta conexiones TCP / IP en el puerto 5432?

85

Antes que nada, tenga en cuenta que he encontrado varias preguntas similares en Stack Overflow y artículos en toda la web, pero ninguna de ellas me ayudó a solucionar mi problema:

Ahora, aquí está el problema:

  • Tengo una aplicación Rails que funciona de maravilla.
  • Con mi colaborador, usamos GitHub para trabajar juntos.
  • Tenemos una mastery una mvpsucursales.
  • Recientemente actualicé mi gitversión con Homebrew (Mac).
  • Usamos Foreman para iniciar nuestra aplicación localmente.

Ahora, cuando intento iniciar la aplicación localmente, aparece el siguiente error:

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?

Intenté reiniciar mis computadoras varias veces.

También verifiqué el contenido de /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

Como puede ver, no hay ningún postmaster.pidarchivo allí.

¿Alguna idea de cómo podría solucionar esto?

Thibaud Clement
fuente
¿Puede actualizar la pregunta con el contenido de postgresql.conf?
Pavan

Respuestas:

57

Lo más probable es que se haya quedado sin batería y su servidor postgresql no se apagó correctamente.

La solución alternativa más sencilla es descargar la aplicación postgresql oficial y ejecutarla: forzará el inicio del servidor ( http://postgresapp.com/ )

Graham Slick
fuente
2
Gracias por tu respuesta. Acabo de descargar la aplicación y la lancé. Si lo apago antes de iniciar mi servidor, sigo recibiendo el mismo error. Si no lo apago, aparece un mensaje de error que indica que mi "base de datos no existe". ¿Puede esto estar relacionado?
Thibaud Clement
Si su base de datos no existe, debe ejecutar rake db: create. Pero lo más probable es que esto no esté relacionado ... ¿Acabas de realizar un repositorio o algo como esto? ¡¡No debería apagarlo antes de iniciar su servidor usando 'rails s' !! La aplicación debe estar ejecutándose todo el tiempo que desee para acceder a su sitio en un host local
Graham Slick
Okay. No, no hice un repositorio, es el mismo repositorio con el que estaba trabajando. Pero corrí git fetch, tal vez este sea el problema.
Thibaud Clement
Se supone que git fetch no está eliminando la base de datos. ¿Qué sucede si ejecuta rake db: create?
Graham Slick
1
"Se quedó sin batería" ... ¡esto es exactamente lo que pasó! : -O
Sagar Ranglani
135

ejecutar postgres -D /usr/local/var/postgresy debería ver algo como:

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

Luego ejecuta kill -9 PIDHINT

Y deberías estar listo para empezar.

user8376606
fuente
4
La mejor solución para mi caso, que es que mi máquina se apagó inesperadamente y reiniciar el servicio no resolvió el problema, ¡gracias!
Paul Nelligan
3
Si está usando homebrew, brew services start postgreso brew services restart postgrespodría hacer el truco
Mirror318
1
¡gracias! Me encontré con este problema por segunda vez, ¿cómo entendiste que esta sería la solución?
qasimalbaqali
1
¿Alguna solución equivalente para linux ubuntu dist?
tito.300
1
Esto funcionó para mí en 2019 después de horas de intentar resolver el problema.
Mwangi Kabiru
54

Lo más probable es que su sistema se apague inesperadamente

Tratar

postgres -D /usr/local/var/postgres

Es posible que vea

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

Entonces intenta

kill -9 PID

ejemplo

kill -9 419

Y debería comenzar postgres normalmente

Nishant
fuente
Sí, mi sistema se apagó inesperadamente y esto resolvió mi problema. gracias.
Developine
24

El servidor postgresql podría estar inactivo y la solución podría ser tan simple como ejecutar:

sudo service postgresql start

que solucionó el problema para mí.

Shiva89
fuente
16

Tuve casi el mismo error con mi aplicación Ruby on Rails ejecutando postgresql (mac). Esto funcionó para mí:

brew services restart postgresql
Talha Meh
fuente
14

Esto funcionó en mi caso:

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

Esto podría deberse al archivo pid creado para postgres que no se ha eliminado debido a un cierre inesperado. Para solucionar este problema, elimine este archivo pid.

  1. Busque el directorio de datos de postgres. En un MAC que usa homebrew /usr/local/var/postgres/, en otros sistemas podría ser/usr/var/postgres/

  2. Elimine el archivo pid ejecutando:

    rm postmaster.pid
    
  3. Reinicie el postgress. En Mac, ejecute:

    brew services restart postgresql
    
Aman Kumar
fuente
¡Gracias! Personalmente tuve que eliminar de esta manera: rm / Users / <username> / Library / Application \ Support / Postgres / var- <versionId> /postmaster.pid
Nicolas Bodin-Ripert
3

Resolví el problema a través de este comando

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

A veces, puede recibir este error.

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

Entonces, intente ejecutar el siguiente comando y luego ejecute el primer comando dado anteriormente.

pg_ctl -D /usr/local/var/postgres stop
techdreams
fuente
2

Si desea reiniciar Postgresql en Linux, debe usar el siguiente comando.

/etc/init.d/postgresql restart

ranvir
fuente
1

Esto funcionó para mí: ejecutar

sudo lsof -i :<port_number>

después de eso, mostrará el PID que está actualmente adjunto al proceso.

Después de esa carrera sudo kill -9 <PID>

Si eso no funciona, pruebe la solución ofrecida por user8376606, ¡definitivamente funcionaría!

vonvick
fuente
1

Primero lo intenté

lsof -wni tcp: 5432 pero no muestra ningún número PID.

Segundo lo intenté

Postgres -D / usr / local / var / postgres y mostró que el servidor está escuchando.

Así que reinicié mi mac para restaurar todos los puertos y funcionó para mí.

Saif chaudhry
fuente
1

Para usuarios de Docker : en mi caso, fue causado por un tamaño de imagen de Docker excesivo. Puede eliminar los datos no utilizados usando el prunecomando:

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

Advertencia: según el manual ( docker system prune --help):

Esto eliminará:

  • todos los contenedores detenidos
  • todas las redes no utilizadas por al menos un contenedor
  • todas las imágenes colgantes
  • todo el caché de compilación colgante
Tomasz Bartkowiak
fuente
1

En mi caso

  1. He cambiado el puerto en el archivo postgresql.conf
  2. y reinicie los servicios de postgresql en

Ejecutar => service.msc => Reiniciar

  1. ahora vuelve a intentar
Niranjan
fuente
0

A menudo encuentro este problema en Windows, la forma en que resolví el problema es Servicio - Haga clic en PostgreSQL Database Server 8.3 - Haga clic en la segunda pestaña "iniciar sesión" - elija la primera línea "la cuenta del sistema local".

管 浩浩
fuente
0

También da el mismo error si simplemente detiene su aplicación PostgreSQL. Solo tienes que empezar de nuevo. (PostgreSQL 11)

sogu
fuente
0

Me enfrenté al mismo problema y no pude iniciar el servidor postgresql y no pude acceder a mi base de datos incluso después de dar la contraseña, y he estado haciendo todas las formas posibles.

Esta solución funcionó para mí,

Para los usuarios de Ubuntu: A través de la línea de comandos, escriba los siguientes comandos:

1.service --status-all (que proporciona una lista de todos los servicios y su estado. Donde "+" se refiere a que se está ejecutando y "-" se refiere a que el servicio ya no se está ejecutando)

compruebe el estado de postgresql, si es "-", escriba el siguiente comando

2.systemctl start postgresql (inicia el servidor de nuevo)

actualice la página de postgresql en el navegador, y funciona

Para los usuarios de Windows:

Busque servicios, donde podemos ver la lista de servicios y haga clic con el botón derecho en postgresql, haga clic en iniciar y el servidor funciona perfectamente bien.

Usha Sravani
fuente
0

Paso 1:

cd /etc/postgresql/12/main/

abrir archivo llamado postgresql.conf

sudo nano postgresql.conf

agrega esta línea a ese archivo

listen_addresses = '*'

luego abra el archivo llamado pg_hba.conf

sudo nano pg_hba.conf

y agregue esta línea a ese archivo

host  all  all 0.0.0.0/0 md5

Permite el acceso a todas las bases de datos para todos los usuarios con una contraseña cifrada.

reinicia tu servidor

sudo /etc/init.d/postgresql restart
Muhammad Usama Rabani
fuente
0

Encontré un problema similar cuando intentaba conectar mi aplicación Django a la base de datos PostgreSQL .

Escribí mi Dockerfilecon instrucciones para configurar el proyecto Django seguido de instrucciones para instalar PostgreSQL y ejecutar el servidor Django en mi docker-compose.yml.

Definí dos servicios en mi 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 

Desafortunadamente cada vez que solía correr docker-compose up mismo error. solía aparecer.

Y así es como se definió mi base de datos en 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',
        },
    }
} 

Entonces, al final hice uso de la docker-compose red, lo que significa que si cambio el hostde mi base de datos a lo postgresque se define como un servicio docker-compose.yml, haré las maravillas.

Entonces, Reemplazar 'HOST': '127.0.0.1' => 'HOST': 'postgres' hizo maravillas por mí.

Después del reemplazo, así es como settings.pyse verá la configuración de su base de datos .

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

En mi caso, olvidé cambiar la base de datos de postgres (en mi producción) a sqlite3 que estaba usando para el desarrollo.

alcadelik
fuente