【问题标题】:How do I delete DB (sqlite3) in Django 1.9 to start from scratch?如何在 Django 1.9 中删除 DB (sqlite3) 以从头开始?
【发布时间】:2017-06-28 06:39:13
【问题描述】:

我的模型中出现拼写错误,现在我的一个专栏拼写错误。我想删除数据库中的所有表,修复 model.py 中的错误,并在 model 中使用正确的拼写重新创建数据库。

我尝试使用this article 中的建议,但按照那里列出的命令后,表格仍然存在。

有人有快速的方法吗?

【问题讨论】:

    标签: django sqlite


    【解决方案1】:
    1. 删除 django 项目文件夹(或放置它的任何位置)中的 sqlite 数据库文件(通常为 db.sqlite3
    2. 删除所有 django 应用中 migration 文件夹中除 __init__.py 文件之外的所有内容(例如:rm */migrations/0*.py
    3. 更改您的模型 (models.py)。
    4. 运行命令python manage.py makemigrationspython3 manage.py makemigrations
    5. 然后运行命令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')"
    

    我更喜欢一次性直接复制粘贴来运行它们。确保更改超级用户凭据。

    注意- 这将删除所有数据库及其相应的迁移

    【讨论】:

      猜你喜欢
      • 2011-01-18
      • 1970-01-01
      • 2019-06-12
      • 1970-01-01
      • 2020-08-31
      • 1970-01-01
      • 1970-01-01
      • 2020-09-09
      • 2016-11-13
      相关资源
      最近更新 更多