我正在开发一个使用Django和Elasticbeanstalk的小型Web应用程序。 我创建了一个包含两个环境(分段和生产)的EB应用程序,创建了一个RDS实例并将其分配给我的EB环境。Elasticbeanstalk /多个数据库的Django迁移过程
对于开发,我使用本地数据库,因为部署到AWS需要相当长的时间。
但是,我遇到了迁移问题。由于我每隔几分钟在本地进行开发和测试,因此我倾向于在本地和两种环境中进行不同的迁移。因此,一旦我将应用程序的当前版本部署到特定环境中,“manage.py migrate”在大多数情况下都会失败,因为表已经存在或者即使它们应该存在也不存在(因为另一个环境已经创建了表)。
所以我想知道如何使用一些常见的,可能没有反映相同的结构无时无刻一些专有的数据库实例进行开发,分期和生产多种环境时,处理迁移过程?
我应该排除从代码库迁移文件和EB部署和运行makemigrations &每次迁移部署后?我不应该使用.ebextensions自动运行迁移,并通过其中一个实例手动应用所有迁移?
什么是使用具有在不同环境下不同的数据库实例相同的Django应用程序的推荐的方法?
但这正是我的意思。出于开发和测试的目的,我可能会在某个时候删除一个表格(或者做其他的事情)。如果我将迁移文件夹部署到Elastic Beanstalk环境,我还必须将相同的事务应用于其他数据库以避免错误。忽略迁移文件并让每个系统保持其自己的迁移会有伤害吗? – wuser92
您可以删除表格,但不要直接在数据库上执行操作。通过django ORM来完成。假设你想删除一个表格,你应该删除该模型并进行迁移。然后,当您在每台服务器上单独迁移它时,您都不会遇到任何问题。 – sprksh
我没有使用弹性豆茎。但是,是的,这是正常的事情。您会忽略迁移文件并在每台服务器上进行单独的迁移(开发,生产,测试)。通常情况下,如果你使用git,你可以将migrations /放入.gitignore中。因此迁移文件将分别在每台服务器上生成。 – sprksh