在Django中重置SQLite数据库

时间:2016-05-07 01:10:35

标签: python django sqlite

我正在尝试重构一个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

谁能告诉我自己可能做错了什么?

编辑:What is the django command to delete all tables?无效。

5 个答案:

答案 0 :(得分:25)

删除数据库并删除应用.py目录中的迁移文件(.pycmigrations)(不要删除__init__.py文件)。然后运行python manage.py makemigrations apppython manage.py migrate

答案 1 :(得分:2)

我有同样的问题,使用Django 1.10,这是我做的,我删除了数据库sqlite文件,删除了每个应用程序内的 pycache 文件夹,删除了迁移文件夹中的所有文件对于每个应用,除了 init .py文件,然后运行python manage.py makemigrationspython manage.py migrate。另请注意,由于您删除了数据库,因此必须使用python manage.py createsuperuser创建新的超级用户。希望这有帮助

答案 2 :(得分:0)

请勿删除您的数据库文件!

删除迁移文件然后运行刷新是正确的,但是删除sqlite数据库文件是错误的。每次都对我有用。如果您正在使用其他数据库,它将为您节省很多工作和准备工作。

  1. 手动删除所有“ .py”和“ .pyc”文件
  2. python manage.py flush
    输入“是”进行确认
  3. python manage.py makemigrations
  4. python manage.py migration

答案 3 :(得分:0)

对我来说,只是

python manage.py flush

删除了旧的数据库内容,因此我能够在Django 2.1.4中重新创建记录。

别忘了创建新的超级用户:

python manage.py createsuperuser

答案 4 :(得分:0)

如果要清除sqlite3 DB,请执行以下步骤,这可能会对您有所帮助。

  1. 删除迁移文件,但 init .py
  2. 除外
  3. 删除dbsqlit3文件
  4. 然后键入python/python3 manage.py migrate
  5. 然后在模型中进行更改
  6. 键入python/python3 manage.py makemigrations
  7. 键入python/python3 manage.py migrate
  8. 然后,您只需输入python/python3 manage.py createsuperuser即可创建新的超级用户。您应该使用新名称而不是旧用户名