Django 1.9.7,db.sqlite3 as DB
我有一个包含多个应用程序的Django项目。对于应用程序“A”,我进行了迁移,但我意外删除了它们并推送到远程git。此外,其他应用程序的许多新内容在白天被推送到git。其他应用程序不依赖于“A”应用程序模型。
一切顺利,直到我决定在“A”应用的模型中添加新字段。我收到OperationalError: no such column:
错误。我尝试为应用“A”python manage.py migrate --fake-initial
进行初始迁移。我有新的迁移,但我仍然有OperationalError: no such column:
。
如何在不影响其他应用迁移的情况下修复“A”应用迁移?
答案 0 :(得分:1)
从git
的角度来看,您可以执行revert
之前的提交。
git revert sha #commit sha of the last commit
或强>
git reset --hard HEAD~n #n how many commits to remove.
git push --force
通过django修复(如果之后没有添加任何迁移,则可能。)
python manage.py makemigrations APP_A --empty
python manage.py makemigrations APP_A
python manage.py migrate --fake
答案 1 :(得分:0)
不幸的是git revert
没有帮助我。最后,我通过执行以下步骤解决了这个问题:
1.手动删除与" A"相关的所有表格。 db.sqlite3中的应用程序。
2.从现有架构创建新的迁移和db.sqlite3表:
python manage.py makemigrations A --empty
python manage.py makemigrations A
python manage.py migrate
3.将表数据从备份转储回db.sqlite3:
sqlite3 ~/Backup/A/db.sqlite3 ".dump table_name" | grep -v "CREATE" | sqlite3 db.sqlite3