Python Elasticbeanstalk/多数据库的Django迁移过程

Python Elasticbeanstalk/多数据库的Django迁移过程,python,django,amazon-web-services,amazon-elastic-beanstalk,django-migrations,Python,Django,Amazon Web Services,Amazon Elastic Beanstalk,Django Migrations,我正在使用Django和Elasticbeanstalk开发一个小型web应用程序。 我创建了一个具有两个环境(登台和生产)的EB应用程序,创建了一个RDS实例并将其分配给我的EB环境 对于开发,我使用本地数据库,因为部署到AWS需要相当长的时间 然而,我在迁移方面遇到了麻烦。因为我每隔几分钟在本地开发和测试一次,所以我倾向于在本地和两个环境上进行不同的迁移 因此,一旦我将当前版本的应用程序部署到某个环境中,“manage.py migrate”通常会失败,因为表已经存在或不存在,即使它们应该存

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

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

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

因此,一旦我将当前版本的应用程序部署到某个环境中,“manage.py migrate”通常会失败,因为表已经存在或不存在,即使它们应该存在(因为另一个环境已经创建了表)

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

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


对于在不同环境中使用不同数据库实例的同一Django应用程序,建议使用什么方法?

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

运行makemigrations时,django创建migrations;运行migrate时,它创建设置文件中指定的数据库

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

为了解决您的问题,您可以删除所有数据库和迁移文件,然后重新开始,因为您可能正在测试。在删除任何服务器中的迁移或数据库之前,一切都会顺利进行


如果您有宝贵的数据,您应该进入迁移文件和表中进行分析和管理。

但这正是我的意思。出于开发和测试的目的,我可能会在某个时候删除一个表(或执行其他操作)。如果我将migrations文件夹部署到Elastic Beanstalk环境中,我还必须将相同的事务应用到其他数据库以避免错误。忽略迁移文件并让每个系统保留自己的迁移是否有害?您可以删除表,但不直接在数据库上执行操作。通过django ORM完成。如果要删除表,则应删除该模型并进行迁移。然后,当您在每台服务器上分别迁移它时,您永远不会遇到任何问题。我没有使用过elastic beanstalk。但是是的,这是正常的事情。您可以忽略迁移文件,并在每台服务器上进行单独的迁移(开发、生产、测试)。通常,如果您使用git,您会将migrations/放在.gitignore中。因此,迁移文件分别在每台服务器上生成。