如何在 Django 1.9 中删除 DB (sqlite3) 以从头开始?
Posted
技术标签:
【中文标题】如何在 Django 1.9 中删除 DB (sqlite3) 以从头开始?【英文标题】:How do I delete DB (sqlite3) in Django 1.9 to start from scratch? 【发布时间】:2017-06-28 06:39:13 【问题描述】:我的模型中出现拼写错误,现在我的一个专栏拼写错误。我想删除数据库中的所有表,修复 model.py 中的错误,并在 model 中使用正确的拼写重新创建数据库。
我尝试使用this article 中的建议,但按照那里列出的命令后,表格仍然存在。
有人有快速的方法吗?
【问题讨论】:
【参考方案1】:-
删除 django 项目文件夹(或放置它的任何位置)中的 sqlite 数据库文件(通常为
db.sqlite3
)
删除所有 django 应用中 migration
文件夹中除 __init__.py
文件之外的所有内容(例如:rm */migrations/0*.py
)
更改您的模型 (models.py
)。
运行命令python manage.py makemigrations
或python3 manage.py makemigrations
然后运行命令python manage.py migrate
。
就是这样。
如果makemigrations
命令未检测到您对模型的更改,请check this answer
【讨论】:
由于 Atom 中的自动完成功能,我发现我在几个不同的地方有错字。一旦我将它们混合在一起,所有这些建议都奏效了。谢谢!【参考方案2】:rm -f tmp.db db.sqlite3
rm -r my-app/migrations
python manage.py makemigrations
python manage.py migrate
删除数据库。
从您的应用中移除迁移。
重新运行迁移。注意:你也可以这样做:python manage.py makemigrations my-app
迁移更改。
【讨论】:
谢谢!这才是外行真正需要的答案!【参考方案3】:你可以删除你的 sqlite 文件。
关于您的问题,您应该使用 Django 迁移系统使用 makemigrations 和 migrate 命令为您的项目进行数据库更改
migration docs
【讨论】:
我将 db.sqlite3 文件移到了回收站。然后,当我尝试进行迁移时,我收到此错误:“django.core.exceptions.FieldError: Unknown field(s) (company_industy) specified for CompanyProfile” company_industy 是我要修复的拼写错误。 考虑到您正在从头开始做所有事情,您可以删除以前的迁移,否则您应该调试迁移文件并查看问题所在 如果删除迁移文件,切记不要删除init文件【参考方案4】:要一次性完成所有操作,请在 shell 脚本(Linux 风格)或批处理文件 (Windows) 中运行以下所有命令。并在您的 manage.py
所在的位置运行该脚本:
find . -path "*/migrations/*.py" -not -name "__init__.py" -delete
find . -path "*/migrations/*.pyc" -delete
find . -path "*.sqlite3" -delete
python manage.py makemigrations
python manage.py migrate
python manage.py migrate
python manage.py shell -c "from django.contrib.auth.models import User; User.objects.create_superuser('admin', 'admin@example.com', 'adminpass')"
我更喜欢一次性直接复制粘贴来运行它们。确保更改超级用户凭据。
注意- 这将删除所有数据库及其相应的迁移
【讨论】:
以上是关于如何在 Django 1.9 中删除 DB (sqlite3) 以从头开始?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 django 1.9 中删除 django-admin 中的保存并继续编辑按钮,使其不存在?
使用 PostgreSQL 9.5 在 Django 1.9 中执行“python manage.py migrate”时出现错误“django.db.utils.OperationalError”
尝试在 Django 1.9 中迁移——奇怪的 SQL 错误 "django.db.utils.OperationalError: near ")": syntax er