我正在尝试重构一个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
谁能告诉我自己可能做错了什么?
答案 0 :(得分:25)
删除数据库并删除应用.py
目录中的迁移文件(.pyc
和migrations
)(不要删除__init__.py
文件)。然后运行python manage.py makemigrations app
和python manage.py migrate
。
答案 1 :(得分:2)
我有同样的问题,使用Django 1.10,这是我做的,我删除了数据库sqlite文件,删除了每个应用程序内的 pycache 文件夹,删除了迁移文件夹中的所有文件对于每个应用,除了 init .py文件,然后运行python manage.py makemigrations
和python manage.py migrate
。另请注意,由于您删除了数据库,因此必须使用python manage.py createsuperuser
创建新的超级用户。希望这有帮助
答案 2 :(得分:0)
请勿删除您的数据库文件!
删除迁移文件然后运行刷新是正确的,但是删除sqlite数据库文件是错误的。每次都对我有用。如果您正在使用其他数据库,它将为您节省很多工作和准备工作。
答案 3 :(得分:0)
对我来说,只是
python manage.py flush
删除了旧的数据库内容,因此我能够在Django 2.1.4中重新创建记录。
别忘了创建新的超级用户:
python manage.py createsuperuser
答案 4 :(得分:0)
如果要清除sqlite3 DB,请执行以下步骤,这可能会对您有所帮助。
python/python3 manage.py migrate
python/python3 manage.py makemigrations
python/python3 manage.py migrate
python/python3 manage.py createsuperuser
即可创建新的超级用户。您应该使用新名称而不是旧用户名