针对Elasticbeanstalk /多个数据库的Django迁移过程

时间:2016-09-14 22:18:49

标签: python django amazon-web-services elastic-beanstalk django-migrations

我正在使用Django和Elasticbeanstalk开发一个小型Web应用程序。 我创建了一个具有两个环境(登台和生产)的EB应用程序,创建了一个RDS实例并将其分配给我的EB环境。

对于开发,我使用本地数据库,因为部署到AWS需要相当长的时间。

但是,我在迁移方面遇到了麻烦。因为我每隔几分钟就在本地开发和测试一次,所以我倾向于在本地和两种环境中进行不同的迁移。

因此,一旦我将当前版本的应用部署到特定环境," manage.py migrate"大多数时候都会失败,因为表已经存在或者不存在,即使它们应该存在(因为另一个环境已经创建了表)。

所以我想知道如何在使用多个环境进行开发,登台和生产时使用一些常见的和一些独特的数据库实例来处理迁移过程,这些实例可能不会始终反映相同的结构?

我是否应该从代码存储库和eb部署中排除迁移文件并运行makemigrations&每次部署后迁移?我是否应该使用.ebextensions自动运行迁移并通过其中一个实例手动应用所有迁移?

在不同环境中使用相同Django应用程序与不同数据库实例的推荐方法是什么?

1 个答案:

答案 0 :(得分:1)

似乎您可能在某个时间点删除了表格或迁移。

当您运行makemigrations时,django会创建migratins,当您运行migrate时,它会创建数据库,无论在设置文件中指定哪个。

有一件事是,如果您继续创建迁移并且不在特定数据库中运行它,那么它绝对没问题。每当您切换到databsse并运行迁移时,它都会处理它,因为每个数据库都会存储到目前为止在django-migrations表中运行迁移的点,并且将仅开始运行下一次迁移。

要解决您的问题,您可以删除所有数据库和迁移文件,然后重新开始,因为您现在可能正在测试。一切都会好起来,直到您删除任何服务器中的迁移或数据库。

如果你有宝贵的数据,你应该进入迁移文件和表来分析和管理事物。