Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Symfony 回滚原则:使用部署器进行迁移_Symfony_Doctrine Orm_Doctrine_Doctrine Migrations_Php Deployer - Fatal编程技术网

Symfony 回滚原则:使用部署器进行迁移

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已部署,它进行了迁移,不使用全名列,而

我有一个Symfony 3应用程序,用于部署我的应用程序。此外,我正在使用迁移我的数据库

我用这个

当我运行DepDeploy时,deployer将迁移我的数据库。但是,当我运行
dep rollback
时,它不会回滚相应的条令迁移

我在谷歌和Stackoverflow上搜索过,找到了解决这个问题的人,但我似乎找不到任何人


您有什么好主意吗?

您可以使用向后兼容的迁移,这样就永远不需要回滚

由于这会导致数据库混乱,因此定期清理BC层通常是个好主意。例如:

  • 部署B已部署,它进行了迁移,不使用
    全名
    列,而是在
    中拆分。
    全名
    列仍保持向后兼容
  • 假设B不稳定:您回滚到A。由于仍然有一个完全工作的
    全名
    列,因此不需要迁移回滚
  • 假设B是稳定的:部署部署C时,应执行迁移,首先确保所有
    全名
    值拆分为
    ,然后完全删除
    全名
  • 假设部署C不稳定:您回滚到B,因为它们都只使用全名,不需要迁移回滚

  • 我喜欢这种方法,但是它不能解决更复杂的问题。这些问题浮现在我的脑海里:1。如何在更改表之间的关系时创建BC。2.当有人保证数据库更改后会有稳定的东西时?@Tomsgu doctrinempiration通过允许您指定
    up
    down
    方法来维护BC。然而,这取决于开发人员是否勤奋并仔细检查这两种方法是否正确。就我自己而言,我通常在编写之后立即调用它们两次(
    php-bin/console原则:migrations:migration
    php-bin/console原则:migrations:migrate-prev
    ),以查看是否存在任何问题。另外,我的持续集成也做了同样的检查,只是为了确定。当引入向后不兼容的更改时,您应该通过使用
    $this->throwIrreversibleMigrationException()
    内部
    down
    migrationYeah迁移当然可以。问题是,我们讨论的是向后兼容的迁移,而不可能迁移到以前的版本(回滚)。