跳至主要內容

資料庫變更

在開發新功能或重構現有功能時,有時候不可避免地需要更改資料庫結構。

這聽起來可能很可怕,作為使用者,你通常需要:

  • 仔細檢查兩個或多個版本之間的差異
  • 以安全且向後相容的方式更改資料庫
  • 為潛在的失敗做好準備,例如準備回滾腳本
  • 逐步將運行中的 Logto 實例替換為新版本

嘿,我們也是開發者,我們知道做這些風險高但必要的事情讓人不開心。 那為什麼不把這些交給不會出錯的工具,比如 CLI 呢?

從現在開始,你的升級過程將是:

  • 從任何可以訪問資料庫的地方運行 logto db alt deploy
  • 逐步將運行中的 Logto 實例替換為新版本

讓我們開始吧!

確定要部署的版本

如果你已經全域安裝了 Logto CLI,強烈建議在部署前將 CLI 升級到最新版本,以獲得完整的資料庫變更功能。然後運行以下命令:

logto db alteration deploy

如果你的資料庫是最新的,你會看到以下訊息:

[info] Found 0 alteration to deploy

如果有未部署的變更,CLI 會要求你選擇所需的版本:

? Choose the alteration target version (Use arrow keys)
> 1.2.0
1.0.0

理論上,要部署的版本應與你的 Logto 實例版本匹配。同時,你可以使用目標版本的命令:

logto db alteration deploy 1.2.0

這在你希望在非 TTY 管道中進行變更時很有幫助,只需記得使用 --db-url 傳遞資料庫 URL。請參閱部署與配置以在你的叢集中設置變更工作。

備註:

對於每個變更腳本,Logto CLI 將在交易中運行整個腳本。因此,如果部署失敗,你可以在問題解決後使用相同的命令輕鬆繼續。

回滾變更

我們的變更腳本也附帶一個 down 腳本,可以回滾更改。要將資料庫狀態回滾到特定版本,將 1.0.0 替換為你的目標版本,然後運行以下命令:

logto db alteration rollback 1.0.0
備註:

你可以在此目錄中找到所有變更腳本。

給貢獻者

Logto 儲存庫的主分支可能包含未發布的變更腳本。你可能需要手動部署「next」變更,運行以下命令:

logto db alteration deploy next

如果你正在開發需要資料庫變更的功能,除了更新資料庫結構外,你還需要提供以下格式的腳本:

next-[timestamp]-what-to-do.ts

請參考此目錄