django.db.utils.OperationalError Could not connect to server

Question:

I am not sure how to fix this issue

I have no idea why I am getting this error when I try to runserver:

Performing system checks...

System check identified no issues (0 silenced).
Unhandled exception in thread started by <function wrapper at 0x1085589b0>
Traceback (most recent call last):
  File "/Library/Python/2.7/site-packages/django/utils/autoreload.py", line 222, in wrapper
    fn(*args, **kwargs)
  File "/Library/Python/2.7/site-packages/django/core/management/commands/runserver.py", line 107, in inner_run
    self.check_migrations()
  File "/Library/Python/2.7/site-packages/django/core/management/commands/runserver.py", line 159, in check_migrations
    executor = MigrationExecutor(connections[DEFAULT_DB_ALIAS])
  File "/Library/Python/2.7/site-packages/django/db/migrations/executor.py", line 17, in __init__
    self.loader = MigrationLoader(self.connection)
  File "/Library/Python/2.7/site-packages/django/db/migrations/loader.py", line 49, in __init__
    self.build_graph()
  File "/Library/Python/2.7/site-packages/django/db/migrations/loader.py", line 184, in build_graph
    self.applied_migrations = recorder.applied_migrations()
  File "/Library/Python/2.7/site-packages/django/db/migrations/recorder.py", line 59, in applied_migrations
    self.ensure_schema()
  File "/Library/Python/2.7/site-packages/django/db/migrations/recorder.py", line 49, in ensure_schema
    if self.Migration._meta.db_table in self.connection.introspection.get_table_list(self.connection.cursor()):
  File "/Library/Python/2.7/site-packages/django/db/backends/__init__.py", line 165, in cursor
    cursor = self.make_debug_cursor(self._cursor())
  File "/Library/Python/2.7/site-packages/django/db/backends/__init__.py", line 138, in _cursor
    self.ensure_connection()
  File "/Library/Python/2.7/site-packages/django/db/backends/__init__.py", line 133, in ensure_connection
    self.connect()
  File "/Library/Python/2.7/site-packages/django/db/utils.py", line 94, in __exit__
    six.reraise(dj_exc_type, dj_exc_value, traceback)
  File "/Library/Python/2.7/site-packages/django/db/backends/__init__.py", line 133, in ensure_connection
    self.connect()
  File "/Library/Python/2.7/site-packages/django/db/backends/__init__.py", line 122, in connect
    self.connection = self.get_new_connection(conn_params)
  File "/Library/Python/2.7/site-packages/django/db/backends/postgresql_psycopg2/base.py", line 134, in get_new_connection
    return Database.connect(**conn_params)
  File "/Library/Python/2.7/site-packages/psycopg2/__init__.py", line 164, in connect
    conn = _connect(dsn, connection_factory=connection_factory, async=async)
django.db.utils.OperationalError: could not connect to server: Connection refused
        Is the server running on host "127.0.0.1" and accepting
        TCP/IP connections on port 5432?

When I try to connect to postgres:

psql: could not connect to server: No such file or directory
        Is the server running locally and accepting
        connections on Unix domain socket "/tmp/.s.PGSQL.5432"?

settings.py:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'beerad',
        'USER': 'bli1',
        'PASSWORD': '',
        'HOST': '127.0.0.1',
        'PORT': '5432',
    }
}
Asked By: Liondancer

||

Answers:

It can be some issues:

  1. PostgreSQL is not running. Check it with sudo service postgresql status
  2. Your PostgresSQl is not running on port 5432. You can check it typing sudo netstat -nl | grep postgres

  3. You have something wrong trying to connect to your db like the username, the password or the databasename. Check that they are what postgres ask for you to connect it and that is the db_name that you want to access to.

  4. Problems with postmaster.pid in postgres. It can happen because of a shutdown unproperly done. It makes to remind a pid alive that doesn’t allow your server start. To fix it you have to:

     * rm /usr/local/var/postgres/postmaster.pid 
     * pg_resetxlog -f /usr/local/var/postgres
    

    After this it should run properly if you make the runserver of postgres

Help in Mac OSX: How to start PostgreSQL server on Mac OS X?

Answered By: Ricardo Burillo

Try killing all postgres processes. Im on a MAC and this solution that I’ve found on ubuntus forum really works.

https://askubuntu.com/questions/547434/how-to-nicely-stop-all-postgres-processes
enter image description here

Answered By: Jcc.Sanabria

For Windows

Go to search bar and just write “Open psql” and hit Enter.

Once screen is opened, rerun django project.

Answered By: Abdul Majeed

In my case, all was set up well and Postgres had the right port, PostgreSQL was running normally, but the 5432 port was being shared with phppgadmin, I could access the phppgadmin that gives me web access to Postgres database server, but my Django application was not working it would return Connection refused error. so I changed the port number on the phppgadmin config file (/etc/phppgadmin/config.inc.php) to 5433 from 5432 and all worked fine.

Answered By: Aldo Okware

Go to aws instance -> security groups -> source -> inbound -> ::0

Answered By: Ankush Sahu

The following command works for me (Windows)-

pg_ctl -D "C:Program FilesPostgreSQL11data" restart

Then run server again-

python manage.py runserver
Answered By: Leena

Restarting the server solved the problem on my side.

Answered By: Boris Dedejski

In case you are seeing this error while using PostgresSQL from Google Cloud follow all configurations as mentioned in
https://cloud.google.com/python/django/flexible-environment#macos-64-bit

Also separate the HOST configuration as below

DATABASES[‘default’][‘HOST’] = ‘/cloudsql/’
if os.getenv(‘GAE_INSTANCE’):
pass
else:
DATABASES[‘default’][‘HOST’] = ‘127.0.0.1’

This helps in resolving this error.

Answered By: satvim

In MacOS I stopped and restarted postgresql according to the advice given in this StackExchange answer:
https://dba.stackexchange.com/a/171580/182403

brew services stop postgresql
rm /usr/local/var/postgres/postmaster.pid # adjust path accordingly to your install
brew services start postgresql
Answered By: Rick Westera

You might not connecting to the right database. If you are using Docker be sure you are using 5432 as port at the outside of the image.

eg:

db:
image: postgres:12.0-alpine
volumes:
– postgres_data:/var/lib/postgresql/data/
env_file:
– ./postgres/.env
ports:
5432:5432

Answered By: deland caglar

One problem that I found common with Django/Postgres (especially with Docker) is that your Django Web App maybe starting up before your Postgres server starts up. If the other solutions don’t work, try to restart your Django App after start up. With Docker, the command would be docker restart <web-app container name>

Answered By: Dejun Jackson

In project_folder/settings.py under DATABASEHOST settings you should use local IP (127.0.0.1) not your public IP.

Correct

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'yourdb',
        'USER': 'youruser',
        'PASSWORD': 'yourpass',
        'HOST': '127.0.0.1',
        'PORT': '5432'
    }
}

Incorrect

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'yourdb',
        'USER': 'youruser',
        'PASSWORD': 'yourpass',
        'HOST': '188.252.196.234 ',
        'PORT': '5432'
    }
}
Answered By: Hrvoje

I had the same issue. This error occurs when an improper system shutdown has been done. I’m on an M1, and I’ve installed PostgreSQL via Homebrew.

I tried to start PostgreSQL after receiving an error identical to yours using brew services start postgresql, but I got this error:

Bootstrap failed: 5: Input/output error
Try re-running the command as root for richer errors.
Error: Failure while executing; `/bin/launchctl bootstrap gui/501 /Users/adithraghav/Library/LaunchAgents/homebrew.mxcl.postgresql.plist` exited with 5.

So, I tried to stop the running instance and start it again with brew services restart postgresql.

This line gave me the following output:

Stopping `postgresql`... (might take a while)
==> Successfully stopped `postgresql` (label: homebrew.mxcl.postgresql)
==> Successfully started `postgresql` (label: homebrew.mxcl.postgresql)

I checked the port on which PostgreSQL was running with sudo netstat -nl | grep postgres, but received no output.

So I deleted the existing postmaster.pid file with this:

rm /opt/homebrew/var/postgres/postmaster.pid 

NOTE: If you are not on an M1 Mac, you have to run rm /usr/local/var/postgres/postmaster.pid.

Then, I ran pg_resetwal -f /opt/homebrew/var/postgres to reset the write-ahead log. (NOTE: From Postgres 10 and onwards, pg_resetxlog has been renamed to pg_resetwal).

Now, python3 manage.py runserver works with no issues 🙂

Answered By: Robo

You have to enable listen addresses if you are using remote database.

cd /etc/postgresql/12.x/main/

open file named postgresql.conf

sudo nano postgresql.conf

add this line to that file

listen_addresses = '*'

then an open a 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

restart your server

sudo /etc/init.d/postgresql restart
Answered By: SAM
Categories: questions Tags: , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.