是否可以在 Typeorm 中恢复特定迁移?,我只想恢复特定迁移,而不是全部,直到我到达我想要恢复的迁移为止,
因为通常情况下,如果您想恢复多个迁移,您只需多次调用
typeorm migration: revert
,它就会开始从上次执行的状态恢复并将其从数据库中删除。
如果您要更改的表更新与上次提交的迁移无关,那么您应该编写新的迁移来进行更改。
恢复任何迁移是最后的手段,当事情未按计划进行时,您可以使用该操作,但我发现大多数问题都可以通过新迁移来解决,而不是恢复回来。
此外,如果您发现迁移太大,请重新调整迁移的基础。您可以删除所有迁移并生成单个基本迁移来创建当前的数据库。我们发现在很长一段时间后这样做很有用,因为随着时间的推移迁移变得多余。
如果您确实确定要在其他迁移之前恢复特定迁移。 您可以尝试在迁移表上调整其 id 值。
从概念上讲,不,这是不可能的,因为每次迁移都会假设发生之前的所有迁移。例如,如果您的迁移的
up()
脚本显示:
ALTER TABLE
article
ALTER COLUMN
article_content nvarchar(4096)
…它假设有一个表
article
,其中有一列 article_content
,这两个列可能已在之前的一次或多次迁移中定义。
但是,实际上来说,如果您 100% 确定任何后续迁移都不会假定已发生,您可以单独恢复它。只需执行其
down()
脚本,然后从迁移表中删除该条目(通常称为 migrations
)。