【发布时间】:2017-06-28 06:39:13
【问题描述】:
我的模型中出现拼写错误,现在我的一个专栏拼写错误。我想删除数据库中的所有表,修复 model.py 中的错误,并在 model 中使用正确的拼写重新创建数据库。
我尝试使用this article 中的建议,但按照那里列出的命令后,表格仍然存在。
有人有快速的方法吗?
【问题讨论】:
我的模型中出现拼写错误,现在我的一个专栏拼写错误。我想删除数据库中的所有表,修复 model.py 中的错误,并在 model 中使用正确的拼写重新创建数据库。
我尝试使用this article 中的建议,但按照那里列出的命令后,表格仍然存在。
有人有快速的方法吗?
【问题讨论】:
db.sqlite3)migration 文件夹中除 __init__.py 文件之外的所有内容(例如:rm */migrations/0*.py)models.py)。python manage.py makemigrations或python3 manage.py makemigrations
python manage.py migrate。就是这样。
如果makemigrations命令未检测到您对模型的更改,请check this answer
【讨论】:
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
迁移更改。
【讨论】:
你可以删除你的 sqlite 文件。
关于您的问题,您应该使用 Django 迁移系统使用 makemigrations 和 migrate 命令为您的项目进行数据库更改
【讨论】:
要一次性完成所有操作,请在 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')"
我更喜欢一次性直接复制粘贴来运行它们。确保更改超级用户凭据。
注意- 这将删除所有数据库及其相应的迁移
【讨论】: