【Go Web開發(fā)】SQL遷移

接下來我們將回到一些更具體的代碼實踐中,并一步步在greenlight數(shù)據(jù)庫中創(chuàng)建一個movie表。

為此,我們只需使用psql工具然后執(zhí)行必要的CREATE TABLE語句。但是,我們將探討如何使用SQL遷移來創(chuàng)建表(更一般地說,如何管理整個項目中數(shù)據(jù)庫模式更改)。

你將學習到:

  • SQL遷移背后的原則以及它們?yōu)槭裁从杏谩?/li>
  • 如何使用命令行工具以編程方式管理數(shù)據(jù)庫模式的更改。

SQL遷移概述

如果你不熟悉SQL遷移的概念,作為一個非常高級的概念它是這樣的工作的:

1、對數(shù)據(jù)庫模式進行的每一次更改(如創(chuàng)建表、添加列或刪除未使用的索引),都要創(chuàng)建一對遷移文件。一個文件用于“up”遷移【對應升級】,其中包含實現(xiàn)更改所需的SQL語句,另一個文件是“down”遷移,其中包含逆轉(或回滾)更改所需的SQL語句。

2、每對遷移文件按順序編號,通常是0001、0002、0003…或者使用Unix時間戳,表示將遷移應用到數(shù)據(jù)庫的順序。

3、您可以使用某種工具或腳本,根據(jù)遷移文件中的SQL語句執(zhí)行或回滾數(shù)據(jù)庫。該工具跟蹤哪些遷移已經(jīng)生效,以便執(zhí)行必要的SQL語句。

使用遷移來管理你的數(shù)據(jù)庫模式,而不是自己手動執(zhí)行SQL語句,有幾個好處:

  • 數(shù)據(jù)庫模式(及其演變和更改)完全由“up”和“down”SQL遷移文件描述。由于這些文件只是包含一些SQL語句,所以可以在版本控制系統(tǒng)中將它們與其他代碼一起跟蹤。
  • 通過運行“up”遷移,可以在另一臺機器上精確地復制當前數(shù)據(jù)庫模式。當您需要在不同的環(huán)境(開發(fā)、測試、生產(chǎn)等)中管理和同步數(shù)據(jù)庫模式時,這是一個很大的幫助。
  • 如果有必要,可以通過應用適當?shù)摹癲own”遷移回滾數(shù)據(jù)庫模式更改。

安裝遷移工具

為了在我們的項目中管理SQL遷移,我們將使用migrate命令行工具(它本身是用Go編寫的)。

不同操作系統(tǒng)的詳細安裝說明可以在這里找到,但在macOS上,你應該能夠使用以下命令進行安裝:

brew install golang-migrate

在Linux和Windows上,最簡單的方法是下載二進制文件并將其拷貝到系統(tǒng)路徑上的某個位置。例如,在Linux上:

$ curl -L https://github.com/golang-migrate/migrate/releases/download/v4.14.1/migrate.linux-amd64.tar.gz | tar xvz 
$ mv migrate.linux-amd64 $GOPATH/bin/migrate

在繼續(xù)之前,請檢查它是否可用,在您的機器上運行,嘗試使用-version命令行參數(shù)執(zhí)行migrate二進制文件。它輸出當前版本號,如下所示:

$ migrate -version
4.14.1

下一篇我們將介紹如何使用migrate工具進行項目的數(shù)據(jù)庫遷移。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容