仅运行下一个迁移文件

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

是否可以使用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

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

migrate sequelize-cli
6个回答
22
投票

我从谷歌来到这里,在文档中找不到任何选项。但是,CLI

sequelize-cli db:migrate --help
显示了一个选项,用于选择要运行的一系列迁移。

他们是:

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

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

总之:

npx sequelize-cli db:migrate --from will-not-be-included.js --to filename.js

7
投票

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

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

在这种特定情况下,无需添加选项

--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

2
投票

事情是,Sequelize 只执行那些尚未执行的迁移,即挂起的迁移。

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


1
投票

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

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

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

之后,按照需要排序所有文件,然后运行 db:migrate 命令。


1
投票

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

20170316142544-create-an-index.js。只需查看哪个迁移最新运行,然后使用执行的迁移旁边的时间戳添加重命名此迁移时间戳。在其后的其他文件中添加一些拼写错误,或者将它们移出文件夹一秒钟,然后迁移。


0
投票

如果您想一次运行一个迁移,您可以使用 --name,这是一个示例:

npx sequelize-cli db:migrate --name XXXXXXXXXXXXXX-addTableLogsDetalheAtividade.ts

这样,您就可以只运行您真正想要运行的迁移。 希望有帮助!

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