Is the server running on host "localhost" (::1) and accepting TCP/IP connections on port 5432?
Ruby on-RailsRubyPostgresqlRuby on-Rails-3Ruby on-Rails-4Ruby on-Rails Problem Overview
Before anything, please note that I have found several similar questions on Stack Overflow and articles all over the web, but none of those helped me fix my issue:
- https://stackoverflow.com/questions/24333317/pg-error-could-not-connect-to-server-connection-refused-is-the-server-running-o
- https://stackoverflow.com/questions/19828385/pgconnectionbad-could-not-connect-to-server-connection-refused
- psql: could not connect to server: Connection refused
Now, here is the issue:
- I have a Rails app that works like a charm.
- With my collaborator, we use GitHub to work together.
- We have a
master
and anmvp
branches. - I recently updated my
git
version with Homebrew (Mac). - We use Foreman to start our app locally.
Now, when I try to launch the app locally, I get the following 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?
I tried to reboot my computers several times.
I also checked the content of /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
As you can see, there is no postmaster.pid
file in there.
Any idea how I could fix this?
Ruby on-Rails Solutions
Solution 1 - Ruby on-Rails
run postgres -D /usr/local/var/postgres
and you should see something like:
FATAL: lock file "postmaster.pid" already exists
HINT: Is another postmaster (PID 379) running in data directory "/usr/local/var/postgres"?
Then run kill -9 PID
in HINT
And you should be good to go.
Solution 2 - Ruby on-Rails
You most likely ran out of battery and your postgresql server didn't shutdown correctly.
The easiest workaround is to download the official postgresql app and launch it: it will force the server to start (http://postgresapp.com/)
Solution 3 - Ruby on-Rails
Most likely it's because your system shutdown unexpectedly
Try
postgres -D /usr/local/var/postgres
You might see
> FATAL: lock file "postmaster.pid" already exists > HINT: Is another postmaster (PID 449) running in data directory "/usr/local/var/postgres"?
Then try
kill -9 PID
example
kill -9 419
And it should start postgres normally
Solution 4 - Ruby on-Rails
The postgresql server might be down and the solution might be as simple as running:
sudo service postgresql start
which fixed the issue for me.
Solution 5 - Ruby on-Rails
This could be caused by the pid file created for postgres which has not been deleted due to unexpected shutdown. To fix this, remove this pid file.
-
Find the postgres data directory. On a MAC using homebrew it is
/usr/local/var/postgres/
, other systems it might be/usr/var/postgres/
-
Remove pid file by running:
rm postmaster.pid
-
Restart postgress. On Mac, run:
brew services restart postgresql
Solution 6 - Ruby on-Rails
I had almost just as same error with my Ruby on Rails application running postgresql(mac). This worked for me:
brew services restart postgresql
Solution 7 - Ruby on-Rails
This worked in my case:
brew uninstall postgresql
rm -fr /usr/local/var/postgres/
brew install postgresql
Solution 8 - Ruby on-Rails
I resolved the issue via this command
pg_ctl -D /usr/local/var/postgres start
At times, you might get this error
pg_ctl: another server might be running; trying to start server anyway
So, try running the following command and then run the first command given above.
pg_ctl -D /usr/local/var/postgres stop
Solution 9 - Ruby on-Rails
Step 1:
cd /etc/postgresql/12/main/
open file named postgresql.conf
sudo nano postgresql.conf
add this line to that file
listen_addresses = '*'
then open file named pg_hba.conf
sudo nano pg_hba.conf
and add this line to that file
host all all 0.0.0.0/0 md5
It allows access to all databases for all users with an encrypted password
restart your server
sudo /etc/init.d/postgresql restart
Solution 10 - Ruby on-Rails
- Find postgresql@10 service directory
$ ls /usr/local/var/postgresql@10
- Find file
postmaster.pid
and delete that file
$ rm -f postmaster.pid
- Restart postgres service using
$ brew services restart postgresql@10
Solution 11 - Ruby on-Rails
In my case PostgreSQL updates from version 13.4
to 14
in background, so it fixes by:
brew postgresql-upgrade-database
In other case the problem fixed by:
rm -rf /usr/local/var/postgres/postmaster.pid
Restart service postgresql
:
brew services restart postgresql
How can you understand what is the problem?
For first see what service is not correct started:
brew services list
For second show file postgres.log
, where will be the error:
tail -f /usr/local/var/log/postgres.log
And so find answer by this error's text
Solution 12 - Ruby on-Rails
This worked for me: run
sudo lsof -i :<port_number>
after that it will display the PID which is currently attached to the process.
After that run sudo kill -9 <PID>
if that doesn't work, try the solution offered by user8376606 it would definitely work!
Solution 13 - Ruby on-Rails
If you want to restart Postgresql on Linux, then you have to use the following command.
/etc/init.d/postgresql restart
Solution 14 - Ruby on-Rails
This is how I solved my problem:
see the status of services
brew services list
and the output was :
Name Status User Plist
postgresql error myuser /Users/myuser/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
unbound stopped
I change the file name in this path, you can also remove it
mv /Users/myuser/Library/LaunchAgents/homebrew.mxcl.postgresql.plist /Users/myuser/Library/LaunchAgents/homebrew.mxcl.postgresql.plist_temp
and then reboot the os
sudo reboot
after booting I started the postgresql
and it worked.
brew services start postgresql
Solution 15 - Ruby on-Rails
First I tried
> lsof -wni tcp:5432 but it doesn't show any PID number.
Second I tried > Postgres -D /usr/local/var/postgres and it showed that server is listening.
So I just restarted my mac to restore all ports back and it worked for me.
Solution 16 - Ruby on-Rails
For Docker users: In my case it was caused by excessive docker image size. You can remove unused data using prune
command:
docker system prune --all --force --volumes
Warning: as per manual (docker system prune --help
):
>This will remove:
> - all stopped containers
- all networks not used by at least one container
- all dangling images
- all dangling build cache
Solution 17 - Ruby on-Rails
In my case
- I have changed the port in postgresql.conf file
- and restart postgresql services in
Run => service.msc => Restart
- now retry
Solution 18 - Ruby on-Rails
I encountered a similar problem when I was trying to connect my Django application to PostgreSQL database.
I wrote my Dockerfile
with instructions to setup the Django project followed by instructions to install PostgreSQL and run Django server in my docker-compose.yml
.
I defined two services in my 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
Unfortunately whenever I used to run docker-compose up
then same err. used to pop up.
And this is how my database was defined in 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',
},
}
}
So, In the end I made use of docker-compose
networking which means if I change the host
of my database to postgres
which is defined as a service in docker-compose.yml
will do the wonders.
So, Replacing 'HOST': '127.0.0.1'
=> 'HOST': 'postgres'
did wonders for me.
After replacement this is how your Database config in settings.py
will look like.
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'abc',
'USER': 'abc',
'PASSWORD': 'abc',
'HOST': 'postgres',
'PORT': '5432',
'OPTIONS': {
'client_encoding': 'UTF8',
},
}
}
Solution 19 - Ruby on-Rails
I often encounter this problem on windows,the way I solved the problem is Service - Click PostgreSQL Database Server 8.3 - Click the second tab "log in" - choose the first line "the local system account".
Solution 20 - Ruby on-Rails
It also gives the same error if you just stop your PostgreSQL app. You just need to start it again. (PostgreSQL 11)
Solution 21 - Ruby on-Rails
I have faced the same issue and I was unable to start the postgresql server and was unable to access my db even after giving password, and I have been doing all the possible ways.
This solution worked for me,
For the Ubuntu users: Through command line, type the following commands:
1.service --status-all (which gives list of all services and their status. where "+" refers to running and "-" refers that the service is no longer running)
check for postgresql status, if its "-" then type the following command
2.systemctl start postgresql (starts the server again)
refresh the postgresql page in browser, and it works
For the Windows users:
Search for services, where we can see list of services and the right click on postgresql, click on start and server works perfectly fine.
Solution 22 - Ruby on-Rails
In my case I forgot to change the database from postgres (on my production) back to sqlite3 which I was using for development.
Solution 23 - Ruby on-Rails
It's working for me >>Node.Js App
user@MacBook-Pro % sudo lsof -i :5430
Output
COMMAND PID user FD TYPE DEVICE SIZE/OFF NODE NAME
node 7885 user 21u IPv6 0x2e7d89f6118f95b9 0t0 TCP *:radec-corp (LISTEN)
Kill the PID
user@MacBook-Pro % sudo kill -9 7885
One more test
user@MacBook-Pro % sudo lsof -i :5430
user@MacBook-Pro % "No more running PID for the port 5430"
Solution 24 - Ruby on-Rails
In my case, on a Ruby on Rails project, I removed a .pid file from the folder tmp/pids
and restart the system.
Solution 25 - Ruby on-Rails
Had the same issue. I checked that my database.yml file, (dev mode) host was pointing to 5433. I updated it to 5432 and it worked.