17

是否可以使用 sequelize-cli 仅运行下一个迁移文件?

我一直在浏览 cli 的文档和帮助部分,它似乎不是这样的功能。

例如,我在运行sequelize db:migrate:status命令时有以下内容;

Loaded configuration file "config/config.js".
Using environment "development".
up   20170301090141-create-something.js
up   20170301133113-create-else.js
up   20170301133821-Update-some-stuff.js
up   20170301135339-create-some-model.js
up   20170307152706-update-some-stuff-two.js
down 20170316142544-create-an-index.js
down 20170421112638-do-some-refactor.js

我只想运行20170316142544-create-an-index.js.

当然,我可以删除所有相关文件。然后我将每个迁移一个接一个地添加回来,在每个迁移之间运行“所有”迁移。但这似乎太野蛮了。

4

5 回答 5

16

我从谷歌来到这里,在 doc 中找不到任何选项。但是,CLIsequelize-cli db:migrate --help会显示一个选项来选择要运行的迁移范围。

他们是:

--to Migration name to run migrations until
--from Migration name to start migrations from (excluding)

显然,您需要提供确切的文件名而不是迁移名称。(在源代码中找到)

TLDR:

npx sequelize-cli db:migrate --from will-not-be-included.js --to filename.js
于 2020-02-06T15:19:47.600 回答
4

我想这个问题已经回答了,但有些人仍然感到困惑。我将尝试对这个特定问题给出一个直接的答案:

npx sequelize-cli db:migrate --to 20170316142544-create-an-index.js

在这种特定情况下,无需添加 option --from,因为20170316142544-create-an-index.js要应用的下一个迁移。

但如果问题是:

我只想运行20170421112638-do-some-refactor.js

然后,您将不得不使用该选项--from来跳转所有其他迁移,直到所需的迁移。在这种情况下:

npx sequelize-cli db:migrate --from 20170316142544-create-an-index.js --to 20170421112638-do-some-refactor.js
于 2020-07-22T16:53:22.997 回答
2

问题是,Sequelize 只执行那些尚未执行的迁移,即未决的迁移。

这意味着当您运行命令sequelize:migrate时,它​​只会执行那些仍在等待中的人。

于 2018-09-22T04:32:47.473 回答
1

您可以简单地更改迁移文件夹中的文件顺序。由于文件名始终以时间戳开头,因此为了更改迁移顺序,您只需通过重命名文件来相应地更新时间戳。

20170316142544-create-an-index.js。只需查看最新运行的迁移并添加重命名此迁移时间戳,并将时间戳紧邻执行的时间戳。在它之后添加一些错别字或将它们移出文件夹一秒钟然后迁移。

于 2020-03-13T02:29:16.370 回答
1

我认为您制作了所有模型,然后您正在尝试运行迁移。

所以,我找到了一个解决方案,我不知道这是否是个好主意。Sequelize 使用即时实际日期命名迁移文件。因此,如果您更改另一个想要的文件的第一个名称字符串,ei

20190717191628-create-team.js
20190717191909-create-player.js 
          **for**
20190717191909-create-team.js
20190717191628-create-player.js 

之后,根据需要对所有文件进行排序,然后运行​​db:migrate命令。

于 2019-08-13T22:40:26.170 回答