英文:
Clean up unused database tables after removing a Django app?
问题
当我从我的INSTALLED_APPS
列表中移除一个Django应用程序时,它不会删除旧的数据库表;运行./manage.py makemigrations
不会检测到任何更改。除了自己进入数据库并删除旧表之外,是否有更好的方法可以在从我的Django项目卸载应用程序后清理未使用的表?
英文:
When I remove a Django app from my list of INSTALLED_APPS
, it doesn't get rid of the old database tables; running ./manage.py makemigrations
doesn't detect any changes.
Apart from going into the database myself and dropping the old tables, is there a better way to clean up unused tables after uninstalling an app from my Django project?
答案1
得分: 2
你可以通过指定zero
来使用迁移命令进行此操作。
示例-
$ python manage.py migrate 应用程序名称 zero
这将安全地回滚数据库表。
运行零迁移后,您可以从INSTALLED_APPS
中移除该应用程序。
英文:
You can use migrate command by specifying a zero
for this purpose.
Example-
$ python manage.py migrate appName zero
This will safely revert the database tables.
After running the zero migration, you may remove the app from INSTALLED_APPS
答案2
得分: 1
尝试:
./manage.py migrate --run-syncdb
它会自动删除与你移除的应用相关的表格。请注意,如果你已经对数据库进行了手动更改,需要在运行此命令之前备份它们。
另一个选项 是使用 "inspectdb" 命令。
- 首先从你的 "INSTALLED_APPS" 中移除该应用。
- 然后运行
./manage.py inspectdb > models.py
- 在生成的 models.py 文件中移除属于你刚卸载的应用的模型。
- 运行
./manage.py migrate --fake
英文:
Try:
./manage.py migrate --run-syncdb
It automatically deletes the tables concerning the app you removed. Take note that if you have already made manual changes to the database, you have to back them up before running this command.
Another option is to use the " inspectdb "command.
- First remove the app from your "INSTALLED_APPS"
- Then run
./manage.py inspectdb > models.py
- Remove the models in the generated models.py file that belong to the app you just uninstalled.
- Run
./manage.py migrate --fake
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论