恢复 TypeORM 中的特定迁移

问题描述 投票:0回答:3

是否可以在 Typeorm 中恢复特定迁移?,我只想恢复特定迁移,而不是全部,直到我到达我想要恢复的迁移为止,

因为通常情况下,如果您想恢复多个迁移,您只需多次调用

typeorm migration: revert
,它就会开始从上次执行的状态恢复并将其从数据库中删除。

javascript node.js typeorm nest
3个回答
2
投票

如果您要更改的表更新与上次提交的迁移无关,那么您应该编写新的迁移来进行更改。

恢复任何迁移是最后的手段,当事情未按计划进行时,您可以使用该操作,但我发现大多数问题都可以通过新迁移来解决,而不是恢复回来。

此外,如果您发现迁移太大,请重新调整迁移的基础。您可以删除所有迁移并生成单个基本迁移来创建当前的数据库。我们发现在很长一段时间后这样做很有用,因为随着时间的推移迁移变得多余。


1
投票

如果您确实确定要在其他迁移之前恢复特定迁移。 您可以尝试在迁移表上调整其 id 值。


0
投票

从概念上讲,不,这是不可能的,因为每次迁移都会假设发生之前的所有迁移。例如,如果您的迁移的

up()
脚本显示:

ALTER TABLE
  article
ALTER COLUMN
  article_content nvarchar(4096)

…它假设有一个表

article
,其中有一列
article_content
,这两个列可能已在之前的一次或多次迁移中定义。

但是,实际上来说,如果您 100% 确定任何后续迁移都不会假定已发生,您可以单独恢复它。只需执行其

down()
脚本,然后从迁移表中删除该条目(通常称为
migrations
)。

© www.soinside.com 2019 - 2024. All rights reserved.