Saltar al contenido principal
Node.js

Solución: ECONNREFUSED — Node.js no puede conectar con la base de datos

La aplicación no puede conectar con PostgreSQL, MySQL u otra base de datos local. Las causas más comunes: el servicio no está corriendo, el puerto es incorrecto o las credenciales están mal.

Error: Error: connect ECONNREFUSED 127.0.0.1:5432

¿Por qué ocurre?

ECONNREFUSED significa que la conexión fue rechazada activamente — el puerto está cerrado o nadie escucha en él. Puede ser porque la base de datos no está arrancada, escucha en un puerto diferente, o el firewall/Docker está bloqueando la conexión.

Solución paso a paso

Paso 1 — Comprueba que la base de datos está corriendo:

# PostgreSQL
# Windows:
Get-Service postgresql*               # PowerShell
# Mac:
brew services list | grep postgresql
# Linux:
sudo systemctl status postgresql

# MySQL sudo systemctl status mysql # Linux brew services list | grep mysql # Mac

# Si no está corriendo, arráncalo: sudo systemctl start postgresql # Linux brew services start postgresql@14 # Mac

Paso 2 — Verifica el puerto y las credenciales:

# Comprueba que algo escucha en el puerto esperado
netstat -ano | findstr :5432     # Windows
lsof -i :5432                    # Mac/Linux

# .env — asegúrate de que los valores son correctos
DATABASE_URL="postgresql://usuario:contraseña@localhost:5432/nombre_db"
# Puerto por defecto PostgreSQL: 5432
# Puerto por defecto MySQL:      3306
# Puerto por defecto MongoDB:    27017

Caso — base de datos en Docker:

# Comprueba que el contenedor está corriendo
docker ps

# Si el contenedor está parado docker start nombre-contenedor

# Si necesitas arrancarlo desde cero docker run -d \ --name mi-postgres \ -e POSTGRES_PASSWORD=secreto \ -e POSTGRES_DB=midb \ -p 5432:5432 \ postgres:16

// En Docker, a veces 'localhost' no funciona — prueba con '0.0.0.0' o '127.0.0.1'
// En docker-compose, usa el nombre del servicio como host:
// DATABASE_URL="postgresql://user:pass@postgres:5432/db"
//                                         ^^^^^^^^ nombre del servicio en compose

Caso — Prisma: esperar a que la DB esté lista:

# Después de arrancar Docker, espera unos segundos antes de conectar
# O usa un health check en docker-compose.yml

# Verifica la conexión manualmente: npx prisma db pull

Cómo evitarlo en el futuro

En proyectos con Docker, usa docker-compose con healthchecks para que la app no arranque hasta que la DB esté lista. Documenta los pasos de setup en el README para que cualquier miembro del equipo pueda arrancar el entorno.

Node.jsPostgreSQLbase de datosErrorconexión

¿Quieres que una IA te ayude? Genera el prompt perfecto para tu error:

Generador de Prompts

¿Necesitas desarrollo a medida?

Apps web, IA, módulos ERP — cuéntame tu proyecto.