如何在 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 makemigrationspython3 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

Django 1.9 URLField 删除必要的 http:// 前缀

如何在 Django 1.9 中传递可调用对象

刷新单应用程序 django 1.9