在Django中重置SQLite数据库

18

我正在尝试重构一个Django项目。我重命名了几个应用程序并添加了一个新的应用程序,同时还调整了一些模型的位置。我想清空数据库和迁移并重新开始,但我不确定该如何实现。这是我的操作:

rm -r myapp/migrations // I ran this for all my apps    
python manage.py flush
python manage.py makemigrations myapp // I ran this for all my apps
python manage.py migrate // This errors

我遇到了一个错误:

django.db.utils.OperationalError: table "myapp_mymodel" already exists

有人可以告诉我可能哪里做错了吗?

更新: 什么是Django删除所有表的命令?没有奏效。


只需删除.sqlite文件即可。这将摧毁您的数据,但您似乎并不在意。 - code_dredd
可能是重复的问题:什么是Django删除所有表的命令? - trinchet
“flush”只是删除数据,而不是数据库的结构。您可以在此处查看更多信息https://dev59.com/SGkv5IYBdhLWcg3wbgQx - trinchet
你必须手动删除迁移文件。 - winux
5个回答

45

删除你的应用程序中 migrations 目录下的数据库和迁移文件(.py.pyc),但不要删除__init__.py 文件。然后运行 python manage.py makemigrations apppython manage.py migrate


"哪个应该先运行?'python manage.py makemigrations app' 还是 'python manage.py migrate' ?" - KKlalala
1
python manage.py makemigrations app 明显 - 你需要有一些东西来迁移。 - Sebastian Suchanowski
1
正确的做法是删除迁移文件,然后运行 flush 命令,但删除 SQLite 数据库文件是错误的。这种方法在我的实践中都很有效。如果你使用的是其他数据库,则可以节省大量工作和准备时间。 1)删除所有 ".py" 和 ".pyc" 文件 2)> python manage.py flush
输入 "yes" 确认执行 3)> python manage.py makemigrations 4)> python manage.py migrate
- winux

5

我曾经遇到同样的问题,使用的是 Django 1.10 版本,以下是我的解决方法:首先删除数据库 sqlite 文件,再删除每个应用程序内的pycache 文件夹,删除每个应用程序内迁移文件夹中除init.py 文件外的所有文件,然后执行 python manage.py makemigrationspython manage.py migrate 命令。请注意,由于删除了数据库,您需要使用 python manage.py createsuperuser 命令创建新的超级用户。希望这能帮到您。


谢谢。这对我很有帮助。 - Anupam

3
对我来说,只需要
python manage.py flush

删除旧数据库内容后,我可以在Django 2.1.4中重新创建记录。

不要忘记创建新的超级用户:

python manage.py createsuperuser

1
这可能会对您在清除sqlite3数据库时有所帮助,请按照以下步骤进行操作:
  1. 删除迁移文件,除了 init.py
  2. 删除dbsqlit3文件
  3. 然后输入 python/python3 manage.py migrate
  4. 接着对您的models进行更改
  5. 输入 python/python3 manage.py makemigrations
  6. 输入 python/python3 manage.py migrate
  7. 然后您需要创建一个新的超级用户,只需输入 python/python3 manage.py createsuperuser,并使用新名称而非旧用户名。

0

不要删除您的数据库文件!

删除迁移文件然后运行flush是正确的,但删除sqlite数据库文件是错误的。这对我来说每次都有效。如果您使用其他数据库,它将为您节省大量工作和准备。

  1. 手动删除所有“.py”和“.pyc”文件
  2. python manage.py flush
    输入“yes”以确认
  3. python manage.py makemigrations
  4. python manage.py migrate

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接