Symfony 回滚原则:使用部署器进行迁移
我有一个Symfony 3应用程序,用于部署我的应用程序。此外,我正在使用迁移我的数据库 我用这个 当我运行DepDeploy时,deployer将迁移我的数据库。但是,当我运行Symfony 回滚原则:使用部署器进行迁移,symfony,doctrine-orm,doctrine,doctrine-migrations,php-deployer,Symfony,Doctrine Orm,Doctrine,Doctrine Migrations,Php Deployer,我有一个Symfony 3应用程序,用于部署我的应用程序。此外,我正在使用迁移我的数据库 我用这个 当我运行DepDeploy时,deployer将迁移我的数据库。但是,当我运行dep rollback时,它不会回滚相应的条令迁移 我在谷歌和Stackoverflow上搜索过,找到了解决这个问题的人,但我似乎找不到任何人 您有什么好主意吗?您可以使用向后兼容的迁移,这样就永远不需要回滚 由于这会导致数据库混乱,因此定期清理BC层通常是个好主意。例如: 部署B已部署,它进行了迁移,不使用全名列,而
dep rollback
时,它不会回滚相应的条令迁移
我在谷歌和Stackoverflow上搜索过,找到了解决这个问题的人,但我似乎找不到任何人
您有什么好主意吗?您可以使用向后兼容的迁移,这样就永远不需要回滚 由于这会导致数据库混乱,因此定期清理BC层通常是个好主意。例如:
全名
列,而是在名
和姓
中拆分。全名
列仍保持向后兼容李>
全名
列,因此不需要迁移回滚李>
全名
值拆分为名
和姓
,然后完全删除全名
列李>
我喜欢这种方法,但是它不能解决更复杂的问题。这些问题浮现在我的脑海里:1。如何在更改表之间的关系时创建BC。2.当有人保证数据库更改后会有稳定的东西时?@Tomsgu doctrinempiration通过允许您指定
up
和down
方法来维护BC。然而,这取决于开发人员是否勤奋并仔细检查这两种方法是否正确。就我自己而言,我通常在编写之后立即调用它们两次(php-bin/console原则:migrations:migration
和php-bin/console原则:migrations:migrate-prev
),以查看是否存在任何问题。另外,我的持续集成也做了同样的检查,只是为了确定。当引入向后不兼容的更改时,您应该通过使用$this->throwIrreversibleMigrationException()
内部down
migrationYeah迁移当然可以。问题是,我们讨论的是向后兼容的迁移,而不可能迁移到以前的版本(回滚)。