TL;DR: Make sure your app’s migrations folder has an
__init__.py file. If it isn’t there, create it again as an empty file.
I ran into this. In my case I had a previously working django app, not yet moved to production, so I deleted everything in my app’s migrations folder, then using django extensions I wiped the postgresql database and cached files with:
# then deleted all files (including __init__.py) from my app's migrations folder.
I verified that my postgresql database had no tables. I then ran:
Which gave the output:
No changes detected
Operations to perform:
Apply all migrations: admin, auth, contenttypes, sessions
Applying contenttypes.0001_initial... OK
(about 11 more lines of output here which are similar)
It is notable that my model’s names where nowhere in the migration. I printed the tables in my postgresql database and the Widget and Section tables were both missing. Running the app gave me this error (I substituted ‘app’ and ‘model’ for their real names):
ProgrammingError at /my_path
relation "app_model" does not exist
LINE 1: ..."."my_field", "app_model"."my_field" FROM "appname...
So the tables for the models were not being created in the database. My app’s migrations folder was also completely empty. The solution was to just add an empty
__init__.py to my app’s migrations folder, and after that running
makemigrations was able to create and save the migration file in the folder. This could then be executed with
migrate. You can test this for yourself by running
makemigrations with and without the
__init__.py in the migrations/ folder.
This solution was not mine but one given by user
Ljubitel on another post but it was not the accepted answer there, but the accepted answer didn’t work for me so I wrote this solution here to hopefully help others.
I had this same problem, but all I had to do was run
$ python manage.py makemigrations
$ python manage.py migrate
- Could not import 'oauth2_provider.ext.rest_framework.OAuth2Authentication' for API setting 'DEFAULT_AUTHENTICATION_CLASSES'
- How to make Django Password Reset Email Beautiful HTML?
- Coverage in parallel for django tests
- Can you declare multiple with variables in a django template?
In case you have deleted your migration folder.
Create a folder called
migration in whatever
app name you have created and then create a file in the migration folder called
- How to manage.py loaddata in Django
- Django model inheritance and type check
- Django makemigrations not detecting project/apps/myapp
- How can I test if my redis cache is working?
Another method to fix relation does not exist error
- Create same table in db(postgre, mysql) using sql query tool
- now comment your model in models.py and admin.py
- run migration using :
- python manage.py makemigrations app_name
- python manage.py migrate
- now uncomment and run migrations command again
I encountered same issue and fixed using following method, I am using postgres(pgadmin 4).
- Using existing field values in django update query
- Is there a way to generate pdf containing non-ascii symbols with pisa from django template?
In my case I was pointing to a different databases between my local server and the production server. The database that the production server was pointing to was a few versions behind, so the server could not locate the relation. If your issue were localized to one environment, check the configs first.
This can happen when you delete the app and then create it again. So, you may have orphaned database tables in your database that are associated with the old version of the app.
try the following:
python manage.py migrate --fake app_name zero
python manage.py makemigrations app_name
python manage.py migrate
- How to add attributes to option tags?
- Change default Django REST Framework home page title
- Django template indentation guideline
You have to make sure that the migration takes place. So:
Add the application name to the command lines and check for creation or change of files /0001_initial.py (0001 represents the order of the file created)
For exemple: if your application is called appsehalcia and your environment sehalcia_env, AND you want to create the three models department, person and division do:
(sehalcia_env) … /appsehalcia# python manage.py makemigrations appsehalcia
Observe something like this:
Migrations for ‘appsehalcia’:
– Create model departement
– Create model person
– Create model division
(sehalcia_env) .../appsehalcia# python manage.py migrate appsehalcia
Observe something like this:
Operations to perform:
Apply all migrations: appsehalcia
- Python multiple inheritance function overriding and ListView in django
- Adding forgot-password feature to Django admin site
You need to go through migrations file manually and edit it to make migration possible.
In my case I have the following error
Applying bot.0008_alter_contenttext_pagename…Traceback (most recent call last):
File "/home/uby/virtualenv/ecoregister_main/3.7/lib/python3.7/site-packages/django/db/backends/utils.py", line 84, in _execute
return self.cursor.execute(sql, params)
psycopg2.errors.StringDataRightTruncation: value too long for type character varying(25)
this is because of the following content of the migration:
# Generated by Django 3.2.19 on 2023-07-12 13:17
dependencies = [
operations = [
It means that I was trying to put lengthy string into charfield of 25 chars. I just put length of 250 chars and do python manage.py migrate
- Registered models do not show up in admin
- How to make follower-following system with django model
- How can I make SSE with Python (Django)?