Django zappa 错误:InconsistentMigrationHistory:Migration admin.0001_initial 在其依赖帐户之前应用0001_initial on

问题描述

所以,我在 AWS Lambda 上使用 Zappa。我刚刚在我的项目中添加一个自定义用户模型并尝试迁移到 AWS 上的 RDS,Zappa 给了我以下错误

InconsistentMigrationHistory: Migration admin.0001_initial is applied before its dependency accounts.0001_initial on database 'default'.

现在,我知道如果我在本地服务器上遇到此错误,我会这样做:

python manage.py migrate admin zero
python manage.py migrate auth zero
python manage.py migrate contenttypes zero
python manage.py migrate sessions zero

然后我将运行迁移以销毁它们的表并再次重新创建它们(参见 this helpful SO post

但是,如果我跑了

zappa manage dev migrate 

在那之后,我得到

InconsistentMigrationHistory: Migration admin.0001_initial is applied before its dependency accounts.0001_initial on database

我应该如何使用 Zappa 在 AWS RDS 上执行相同的操作,还是应该执行其他操作?

解决方法

我使用 zappa-django-utils command 简单地销毁了表:

zappa manage prod drop_pg_db
zappa manage prod create_pg_db

棘手的部分是创建一个新的管理员用户。由于我用accounts模型替换了auth模型,我不得不使用原始python命令:

zappa invoke --raw dev "from django.accounts.models import User; User.objects.create_superuser('admin@yourdomain.com','ohsosecretepass')"

通常,自定义用户模型应该在任何迁移之前实现,因为很多事情都与用户模型相关。因此,尽管我试图避免它,但删除所有表是不可避免的。