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

接下來我們將回到一些更具體的代碼實踐中惹悄,并一步步在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ù)庫遷移衅斩。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市怠褐,隨后出現(xiàn)的幾起案子畏梆,更是在濱河造成了極大的恐慌,老刑警劉巖奈懒,帶你破解...
    沈念sama閱讀 222,252評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件奠涌,死亡現(xiàn)場離奇詭異,居然都是意外死亡磷杏,警方通過查閱死者的電腦和手機溜畅,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來极祸,“玉大人慈格,你說我怎么就攤上這事∫=穑” “怎么了浴捆?”我有些...
    開封第一講書人閱讀 168,814評論 0 361
  • 文/不壞的土叔 我叫張陵,是天一觀的道長汰规。 經(jīng)常有香客問我汤功,道長,這世上最難降的妖魔是什么溜哮? 我笑而不...
    開封第一講書人閱讀 59,869評論 1 299
  • 正文 為了忘掉前任滔金,我火速辦了婚禮色解,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘餐茵。我一直安慰自己科阎,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 68,888評論 6 398
  • 文/花漫 我一把揭開白布忿族。 她就那樣靜靜地躺著锣笨,像睡著了一般。 火紅的嫁衣襯著肌膚如雪道批。 梳的紋絲不亂的頭發(fā)上错英,一...
    開封第一講書人閱讀 52,475評論 1 312
  • 那天,我揣著相機與錄音隆豹,去河邊找鬼椭岩。 笑死,一個胖子當(dāng)著我的面吹牛璃赡,可吹牛的內(nèi)容都是我干的判哥。 我是一名探鬼主播,決...
    沈念sama閱讀 41,010評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼碉考,長吁一口氣:“原來是場噩夢啊……” “哼塌计!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起侯谁,我...
    開封第一講書人閱讀 39,924評論 0 277
  • 序言:老撾萬榮一對情侶失蹤锌仅,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后良蒸,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體技扼,經(jīng)...
    沈念sama閱讀 46,469評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,552評論 3 342
  • 正文 我和宋清朗相戀三年嫩痰,在試婚紗的時候發(fā)現(xiàn)自己被綠了剿吻。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,680評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡串纺,死狀恐怖丽旅,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情纺棺,我是刑警寧澤榄笙,帶...
    沈念sama閱讀 36,362評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站祷蝌,受9級特大地震影響茅撞,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,037評論 3 335
  • 文/蒙蒙 一米丘、第九天 我趴在偏房一處隱蔽的房頂上張望剑令。 院中可真熱鬧,春花似錦拄查、人聲如沸吁津。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,519評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽碍脏。三九已至,卻和暖如春稍算,著一層夾襖步出監(jiān)牢的瞬間典尾,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,621評論 1 274
  • 我被黑心中介騙來泰國打工邪蛔, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留急黎,地道東北人。 一個月前我還...
    沈念sama閱讀 49,099評論 3 378
  • 正文 我出身青樓侧到,卻偏偏與公主長得像,于是被迫代替她去往敵國和親淤击。 傳聞我的和親對象是個殘疾皇子匠抗,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,691評論 2 361

推薦閱讀更多精彩內(nèi)容