2017-05-05 66 views
0

我的第一个网站postgres上的Newb。我回滚了一次迁移,然后又进行了一次迁移。我离开第二次迁移空和轨道数据库:迁移。回滚迁移的后果

一切看起来很正常,但不好的移民仍然坐在那里,我并不特别喜欢它。我只是想知道如果我继续下去会有什么后果。

编辑:我的问题是 - 如果我回滚迁移,当别人拉下来,迁移是否会自然地经历并且弄乱以下迁移?

回答

1

如果这是一个新的应用程序,并且您现在只在本地计算机上开发(特别是如果您单独开发的话),我会回滚迁移(因为数据库中的数据在那个时候应该不要太重要,否则它的损失不应该造成任何伤害,并且我个人更喜欢在开发过程中不会有不必要的甚至错误/损坏的迁移文件),删除损坏的迁移文件,创建正确的迁移并运行db:迁移并将更改推送到git。 所以(轨道5): 轨d迁移MigrationYouWishToDestroy 轨分贝:迁移

如果你是在一个团队开发(和以前的移民已经被推到回购)和/或数据可以”正在不能通过回滚失败,那么你应该创建一个新的迁移,有效地撤销你以前的迁移(坏的迁移)。这样,你的同事只需要在更改之后运行db:migrate就可以了。否则,他们将不得不回滚他们的db,然后运行db:migrate

+0

我明白这一点。因此,如果我将其回滚,可以销毁前面已经回滚的失败迁移,然后正常进行新的迁移。我如何知道我目前正在进行哪种迁移? ...如果我回滚了,是否有办法知道哪一个是最后迁移的迁移? – fdsaevad

+0

正确。您可以使用db回滚:rollback STEP = x其中x是您希望回滚的迁移数。这样你就知道你有多少迁移,从而知道哪个迁移是最后迁移的。 –

+0

我感谢您的帮助!我试图回滚失败的迁移,并且在尝试迁移它时给我提供了错误。如果我db:从这一点回滚STEP = 2(跳到它前面的那个),它是否会跳过失败的迁移,然后我就可以销毁它? – fdsaevad