ProgrammingError: relation "django_session" does not exist
Question:
Got this error after changing my database from sqlite to postgresql. I’ve made all my settings changes:
Here’s my settings:
DATABASES = {
'default': {
'ENGINE': "django.db.backends.postgresql_psycopg2",
'NAME': "postr1",
'USER': "zorgan",
'PASSWORD': config('DB_PASSWORD'),
'HOST': "localhost",
'PORT': '',
}
}
as well as performing makemigrations
and migrations
which were all successful. So I’m able to succesfully start my local server:
System check identified no issues (0 silenced).
May 15, 2018 - 08:59:39
Django version 1.11.8, using settings 'draft1.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
however when I go to the site it returns this error:
ProgrammingError at /news/
relation "django_session" does not exist
LINE 1: ...ession_data", "django_session"."expire_date" FROM "django_se...
Any idea what the problem is?
Answers:
Try fake migrate
to zero.
Your migration history shows that sessions
table was already made, but you don’t have real table.
so following below
python manage.py migrate --fake sessions zero
# then your sessions migrate will be
python manage.py showmigrations
sessions
[ ] 0001_initial
# then migrate with --fake-initial again
python manage.py migrate --fake-initial
Then try again.
I’m using django-v-3
Here is the answer how to solve this issue?
1. python manage.py migrate –fake
2. python manage.py migrate –fake-initial
3. Then write python manage.py runserver
Enjoy
If facing issue use python manage.py help. I hope that you will get the solution.
Since you were using sqlite and changed to Postgres, your user and password no longer work and you got that error. Depending on what is your docker-compose.yml file you can do a migrate command:
docker-compose exec web python manage.py migrate
and than create a new superuser:
docker-compose exec web python manage.py createsuperuser
Now your app should work.
Got this error after changing my database from sqlite to postgresql. I’ve made all my settings changes:
Here’s my settings:
DATABASES = {
'default': {
'ENGINE': "django.db.backends.postgresql_psycopg2",
'NAME': "postr1",
'USER': "zorgan",
'PASSWORD': config('DB_PASSWORD'),
'HOST': "localhost",
'PORT': '',
}
}
as well as performing makemigrations
and migrations
which were all successful. So I’m able to succesfully start my local server:
System check identified no issues (0 silenced).
May 15, 2018 - 08:59:39
Django version 1.11.8, using settings 'draft1.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
however when I go to the site it returns this error:
ProgrammingError at /news/
relation "django_session" does not exist
LINE 1: ...ession_data", "django_session"."expire_date" FROM "django_se...
Any idea what the problem is?
Try fake migrate
to zero.
Your migration history shows that sessions
table was already made, but you don’t have real table.
so following below
python manage.py migrate --fake sessions zero
# then your sessions migrate will be
python manage.py showmigrations
sessions
[ ] 0001_initial
# then migrate with --fake-initial again
python manage.py migrate --fake-initial
Then try again.
I’m using django-v-3
Here is the answer how to solve this issue?
1. python manage.py migrate –fake
2. python manage.py migrate –fake-initial
3. Then write python manage.py runserver
Enjoy
If facing issue use python manage.py help. I hope that you will get the solution.
Since you were using sqlite and changed to Postgres, your user and password no longer work and you got that error. Depending on what is your docker-compose.yml file you can do a migrate command:
docker-compose exec web python manage.py migrate
and than create a new superuser:
docker-compose exec web python manage.py createsuperuser
Now your app should work.