接下來我們將回到一些更具體的代碼實踐中惹悄,并一步步在greenlight數(shù)據(jù)庫中創(chuàng)建一個movie表。
為此进肯,我們只需使用psql工具然后執(zhí)行必要的CREATE TABLE語句安聘。但是,我們將探討如何使用SQL遷移來創(chuàng)建表(更一般地說友存,如何管理整個項目中數(shù)據(jù)庫模式更改)。
你將學(xué)習(xí)到:
- SQL遷移背后的原則以及它們?yōu)槭裁从杏谩?/li>
- 如何使用命令行工具以編程方式管理數(shù)據(jù)庫模式的更改陶衅。
SQL遷移概述
如果你不熟悉SQL遷移的概念屡立,作為一個非常高級的概念它是這樣的工作的:
1、對數(shù)據(jù)庫模式進(jìn)行的每一次更改(如創(chuàng)建表搀军、添加列或刪除未使用的索引)膨俐,都要創(chuàng)建一對遷移文件。一個文件用于“up”遷移【對應(yīng)升級】奕巍,其中包含實現(xiàn)更改所需的SQL語句吟策,另一個文件是“down”遷移,其中包含逆轉(zhuǎn)(或回滾)更改所需的SQL語句的止。
2檩坚、每對遷移文件按順序編號,通常是0001诅福、0002匾委、0003…或者使用Unix時間戳,表示將遷移應(yīng)用到數(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”遷移,可以在另一臺機器上精確地復(fù)制當(dāng)前數(shù)據(jù)庫模式。當(dāng)您需要在不同的環(huán)境(開發(fā)瞪讼、測試钧椰、生產(chǎn)等)中管理和同步數(shù)據(jù)庫模式時,這是一個很大的幫助符欠。
- 如果有必要嫡霞,可以通過應(yīng)用適當(dāng)?shù)摹癲own”遷移回滾數(shù)據(jù)庫模式更改。
安裝遷移工具
為了在我們的項目中管理SQL遷移背亥,我們將使用migrate命令行工具(它本身是用Go編寫的)秒际。
不同操作系統(tǒng)的詳細(xì)安裝說明可以在這里找到悬赏,但在macOS上狡汉,你應(yīng)該能夠使用以下命令進(jìn)行安裝:
brew install golang-migrate
在Linux和Windows上,最簡單的方法是下載二進(jìn)制文件并將其拷貝到系統(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二進(jìn)制文件。它輸出當(dāng)前版本號剩膘,如下所示:
$ migrate -version
4.14.1
下一篇我們將介紹如何使用migrate工具進(jìn)行項目的數(shù)據(jù)庫遷移衅斩。