91๐
In django 1.7 you can try:
1. Delete your migrations folder
2. In the database: DELETE FROM django_migrations WHERE app = 'app_name'.
You could alternatively just truncate this table.
3. python manage.py makemigrations
4. python manage.py migrate --fake
If you are working in django 1.9.5 this is the 100 % solution for this problem:
1. Delete your migrations folder
2. In the database: DELETE FROM django_migrations WHERE app = 'app_name'.
You could alternatively just truncate this table.
3. python manage.py makemigrations app_name
4. python manage.py migrate
This works 100% for me!
24๐
Jan 2021
I had a migration problem and I had to drop/delete a table by pgadmin. Then, when I makemigrations
and migrate
the table wasnโt recreated. In this way, Iโve found this procedure which worked for me:
python manage.py migrate --fake app_name zero
python manage.py migrate app_name
[NOTE]
- If you donโt have the intended migration file, create that before the above commands by
python manage.py makemigrations
- If you donโt want to roll back to the initial(zero) state use the number of migration file instead of
zero
, e.g.python manage.py migrate --fake myappname 0005
- I tested this approach in Django 2.2
- [Django]-How to add url parameters to Django template url tag?
- [Django]-Django โ what is the difference between render(), render_to_response() and direct_to_template()?
- [Django]-Collectstatic error while deploying Django app to Heroku
19๐
There isnโt an easy way to get Django to recreate a table that you have deleted manually. Once your database is altered manually, Djangoโs view of the database (from migrations) is different from reality, and it can be tricky to fix.
If you run the sqlmigrate command, it will show you the required SQL to create the table. You can run the sql in a database shell. Assuming your app name is students
, and the migration that created the table was 00XX_create_students.py
, you would do:
./manage.py sqlmigrate students 00XX_create_students
Be careful if there are foreign keys to or from the students table, the constraints will have to be created as well.
- [Django]-How to unit test file upload in django
- [Django]-What is the canonical way to find out if a Django model is saved to db?
- [Django]-Where are the Assertion Methods list from Django TestCase?
16๐
The only way that worked for me:
rm -r <app-name>/migrations/
python manage.py makemigrations <app-name>
python manage.py sqlmigrate <app-name> 0001_initial
Copy what it prints out (or, depending on what you have actually removed from the DB, only part of the SQL queries).
Apply those copied queries to your DB:
psql -U user_name -h 127.0.0.1 database_name
Paste what you have copied from the SQL queries printout.
Commit the queries.
And thatโs it โ your missing tables are created.
- [Django]-Django SUM Query?
- [Django]-Django 1.7.1 Makemigrations fails when using lambda as default for attribute
- [Django]-Unsupported operand type(s) for *: 'float' and 'Decimal'
5๐
The answer that worked for me is as follows:
Assume in your database a table of a model has been deleted and you need to re-create, then do the following.
-
comment out the model in models.py that creates the table that has been deleted (either the model class or a line that creates a table like
a = models.ManyToManyField(...)
) -
run:
python manage.py makemigrations <app-name>
, where<app-name>
is the name of of the app where you have models.py -
run:
python manage.py migrate --fake <app-name>
-
un-comment the model in models.py
-
run:
python manage.py makemigrations <app-name>
-
run:
python manage.py migrate <app-name>
(without the โfake)
and you the table should be back in the database. But any data that was in the table will be lost.
- [Django]-Django: Staff Decorator
- [Django]-Django โ how to unit test a post request using request.FILES
- [Django]-Django : Filter query based on custom function
2๐
Delete the migration folder from your migration app folder and simply run the migration commands:
python3 manage.py makemigrations appname
python3 manage.py migrate
- [Django]-How can I get tox and poetry to work together to support testing multiple versions of a Python dependency?
- [Django]-How to debug Django commands in PyCharm
- [Django]-OneToOneField() vs ForeignKey() in Django
1๐
For Django 1.10.4
I deleted the db.sqlite3 file from the project folder and then ran the following commands:
- python manage.py makemigrations app_name
- python manage.py migrate
- [Django]-Using Pylint with Django
- [Django]-Can one use the Django database layer outside of Django?
- [Django]-Django and domain driven design
1๐
I just deleted my migrations folder, dropped the whole database, then i made migration for the app
python3 manage.py makemigration
python3 manage.py migrate
and it came back.
- [Django]-Python Asyncio in Django View
- [Django]-Dynamic File Path in Django
- [Django]-Mac OS X โ EnvironmentError: mysql_config not found
1๐
Rename the deleted table name to some_new_name in the models.py and run:
python3 manage.py makemigration
python3 manage.py migrate
again rename the some_new_name table to the original name and run
python3 manage.py makemigration
python3 manage.py migrate
finally, go to the dbshell and drop the table some_new_name
- [Django]-How can I change the modelform label and give it a custom name
- [Django]-Django's SuspiciousOperation Invalid HTTP_HOST header
- [Django]-How can I find the union of two Django querysets?
- [Django]-What is the function of the name parameter in django.urls.path?
- [Django]-Django: Catching Integrity Error and showing a customized message using template
- [Django]-How do you run a worker with AWS Elastic Beanstalk?
0๐
Django 1.11.2 using MariaDB, accidental drop of database table.
To recreate table, try the following:
1/ Delete all except for init.py in your app/migrations directory
2/ select * from django_migrations; delete from django_migrations where app = โyourappโ;
3/ Check your model is good and run: python manage.py makemigrations
4/ python manage.py migrate
Works for me!
- [Django]-'pip' is not recognized as an internal or external command
- [Django]-Can "list_display" in a Django ModelAdmin display attributes of ForeignKey fields?
- [Django]-How to create a custom decorator in Django?
0๐
if you have created your classes and performed the migration operation, and then you want to add items to your classes, empty the migration folder with this command beforehand.
In Django 3, I proceeded according to the following steps and it worked 100%
python manage.py makemigrations appname --empty
python manage.py makemigrations appname
python manage.py migrate
- [Django]-How do I send empty response in Django without templates
- [Django]-Django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet. (django 2.0.1)(Python 3.6)
- [Django]-Django query get last n records
0๐
Actually, the above methods did not work for me, so I just perform the below workaround as I did not want to manually write the whole query to create the table.
So I changed the database in the settings file and re-ran the migrations command after deleting the migrations folder, then just performed the python migrate command it created new tables in another database then from there just opened the table in query view, copied the script, and inserted the table in my main database.
- [Django]-Django Multiple Choice Field / Checkbox Select Multiple
- [Django]-How to check the TEMPLATE_DEBUG flag in a django template?
- [Django]-ImportError: No module named virtualenv
0๐
Another Simple way to do this is
- Go to your migrations folder.
- Search for the file which contains the code to create the Students table in DB.
- Remove the code snippet from the file and save it.
- Then run py manage.py makemigrations and py manage.py migrate again
This worked for me ๐
- [Django]-What is an efficient way of inserting thousands of records into an SQLite table using Django?
- [Django]-In Django, how do you make a model refer to itself?
- [Django]-Django : How can I find a list of models that the ORM knows?
0๐
In this case, you need to trick django!
Do one thingโฆ
- copy the "students" model in models.py with other name like
"studentscopy". - Now run โ> python manage.py makemigration
- It will create a new migration in migration package of your app. Open
that last migration and rename "studentscopy" back to "students"
in that file. - Now run โ> python manage.py migrate
It will create the table again with "students" name and at last delete that "studentscopy" model from your models.py file.
- [Django]-Running Django with FastCGI or with mod_python
- [Django]-Deploying Django with gunicorn and nginx
- [Django]-Adding links to full change forms for inline items in django admin?
0๐
Below steps solved the problem for me
-
Delete all migrations files
-
python manage.py makemigrations (Create your initial migration file 0001_inital.py)
-
python manage.py migrate โfake <app_name> zero
( Tell Django to mark the migrations as having been applied or unapplied, but without actually running the SQL to change your database schema. This brings the migrations to zeroth state. Otherwise Django will think thereโs no change to apply )
- python manage.py migrate
- [Django]-Install mysql-python (Windows)
- [Django]-How to get request object in django unit testing?
- [Django]-Sharing models between Django apps
0๐
I know this question is old and I tried a lot of what was in this thread, but ultimately what fixed it for me was this:
python manage.py migrate --run-syncdb
- [Django]-What is a context in Django?
- [Django]-Django connection to PostgreSQL: "Peer authentication failed"
- [Django]-How to print BASE_DIR from settings.py from django app in terminal?