簡體   English   中英

僅運行下一個遷移文件

[英]Run only the next migration file

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

當然,我可以刪除所有相關文件。 然后我將每個遷移一一添加回來,在每個遷移之間運行“所有”遷移。 但這似乎太野蠻了。

我是從 Google 來到這里的,但在 doc 中找不到任何選項。 但是,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

我想這個問題已經回答了,但有些人仍然感到困惑。 我將嘗試直接回答這個特定問題:

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

事情是,Sequelize 只執行那些尚未執行的遷移,即掛起的 Means。

這意味着當您運行命令sequelize:migrate 時,它只會執行那些仍在等待中的人。

我認為您制作了所有模型,然后您正在嘗試運行遷移。

所以,我找到了一個解決方案,我不知道這是否是個好主意。 Sequelize 使用即時實際日期命名遷移文件。 因此,如果您更改另一個想要的文件的第一個名稱字符串,ei

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

之后,根據需要對所有文件進行排序,然后運行db:migrate命令。

您可以簡單地更改遷移文件夾中的文件順序。 由於文件名總是以時間戳開頭,因此為了更改遷移順序,您只需要通過重命名文件來相應地更新時間戳。

20170316142544-create-an-index.js。 只需查看最新運行的遷移並添加重命名此遷移時間戳,並在執行的時間戳旁邊添加時間戳。 在它之后添加一些錯別字或將它們移出文件夾一秒鍾然后遷移。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM