|
| 1 | +# db-migrate-startkit |
| 2 | + |
| 3 | +## 事前準備 |
| 4 | + |
| 5 | +下載安裝Docker Desktop |
| 6 | +* [Windows版](https://desktop.docker.com/win/main/amd64/Docker%20Desktop%20Installer.exe?utm_source=docker&utm_medium=webreferral&utm_campaign=dd-smartbutton&utm_location=module&_gl=1*1x0tato*_gcl_au*NDk4NzQwNjM1LjE3MjczMzQ0NDY.*_ga*MTkxMzI2NzM5NC4xNjU5OTM4NTcy*_ga_XJWPQMJYHQ*MTcyNzMzMzcxNy4xNTYuMS4xNzI3MzM0NDY4LjM3LjAuMA..) |
| 7 | +* Mac版 |
| 8 | + * [Intel處理器](https://desktop.docker.com/mac/main/amd64/Docker.dmg?utm_source=docker&utm_medium=webreferral&utm_campaign=dd-smartbutton&utm_location=module&_gl=1*sjadaf*_gcl_au*NDk4NzQwNjM1LjE3MjczMzQ0NDY.*_ga*MTkxMzI2NzM5NC4xNjU5OTM4NTcy*_ga_XJWPQMJYHQ*MTcyNzMzMzcxNy4xNTYuMS4xNzI3MzM0NDY4LjM3LjAuMA..) |
| 9 | + * [M系列處理器](https://desktop.docker.com/mac/main/arm64/Docker.dmg?utm_source=docker&utm_medium=webreferral&utm_campaign=dd-smartbutton&utm_location=module&_gl=1*sjadaf*_gcl_au*NDk4NzQwNjM1LjE3MjczMzQ0NDY.*_ga*MTkxMzI2NzM5NC4xNjU5OTM4NTcy*_ga_XJWPQMJYHQ*MTcyNzMzMzcxNy4xNTYuMS4xNzI3MzM0NDY4LjM3LjAuMA..) |
| 10 | + |
| 11 | +下載並安裝Node.js |
| 12 | +* [下載連結](https://nodejs.org/zh-tw) |
| 13 | + |
| 14 | +下載並安裝Dbeaver Community |
| 15 | +* [Windows版](https://dbeaver.io/files/dbeaver-ce-latest-x86_64-setup.exe) |
| 16 | +* Mac版 |
| 17 | + * [Intel處理器](https://dbeaver.io/files/dbeaver-ce-latest-macos-x86_64.dmg) |
| 18 | + * [M系列處理器](https://dbeaver.io/files/dbeaver-ce-latest-macos-aarch64.dmg) |
| 19 | + |
| 20 | +## 開始使用 |
| 21 | + |
| 22 | +### 安裝套件 |
| 23 | + |
| 24 | +>執行前請確保已經安裝了Node.js |
| 25 | +
|
| 26 | +打開終端機並輸入以下指令 |
| 27 | +``` |
| 28 | +$ npm i |
| 29 | +``` |
| 30 | + |
| 31 | +### 新增一組遷移 |
| 32 | +在終端機輸入以下指令來新增一組遷移,your_file_name請替換成任何你要的檔案名稱,檔案名稱之間不可有空白 |
| 33 | +``` |
| 34 | +$ npm run create your_file_name |
| 35 | +``` |
| 36 | +執行後程式將自動產生一組遷移在migrations資料夾下,一組遷移將包含3個檔案,檔案皆以日期時間加上剛剛輸入的文字命名: |
| 37 | + |
| 38 | +範例如下: |
| 39 | +``` |
| 40 | +2024092600000-your_file_name-up.sql |
| 41 | +2024092600000-your_file_name-down.sql |
| 42 | +2024092600000-your_file_name.js |
| 43 | +``` |
| 44 | +* 2024092600000-your_file_name-up.sql:執行遷移時會被執行的sql檔案 |
| 45 | + |
| 46 | +* 2024092600000-your_file_name-down.sql:執行遷移失敗時,才會被執行的sql檔案,一般作為還原up檔執行到一半的sql用,不需要可空白 |
| 47 | + |
| 48 | +* 2024092600000-your_file_name.js:執行此組遷移的程式檔案,請勿修改 |
| 49 | + |
| 50 | +那些遷移檔案內容的小技巧: |
| 51 | +* 每組遷移盡量保持單一職責,例如需要新增表並寫入資料,建議拆分成兩組遷移,一組新增表,一組寫入資料 |
| 52 | +* 不修改已經執行過的遷移,如有需要,應該新增新的遷移來修改 |
| 53 | + |
| 54 | +### 首次在本機開啟資料庫並執行遷移 |
| 55 | + |
| 56 | +> 請確保Docker Desktop已經正常啟動,並能夠看到容器頁面(Containers) |
| 57 | +
|
| 58 | +打開終端機並輸入以下指令,程式將自動啟動資料庫,並運行遷移 |
| 59 | +``` |
| 60 | +$ npm run start |
| 61 | +``` |
| 62 | + |
| 63 | +啟動後,請檢查Docker Desktop程式界面中裡是否新增db-migrate-startkit的容器堆疊,該堆疊裡了有兩個容器: |
| 64 | +* db_migrate-1:執行遷移檔案的容器,執行後會自動關閉(狀態(STATUS)為Exited)。請務必進入檢查查看遷移的執行結果,確保遷移執行成功。 |
| 65 | +* postgres-1:資料庫容器,狀態應為Running |
| 66 | + |
| 67 | +啟動時,程式將自動產生pgdata資料夾,用以保存資料庫的資料,如將其刪除,將清空所有資料。 |
| 68 | + |
| 69 | +程式執行遷移時,將依照遷移檔案的日期,由遠至近執行,且每組遷移只會執行一次,先前執行成功過的遷移不會被再次執行。 |
| 70 | + |
| 71 | +### 重新啟動資料庫 |
| 72 | +``` |
| 73 | +$ npm run restart |
| 74 | +``` |
| 75 | +### 關閉資料庫 |
| 76 | +``` |
| 77 | +$ npm run stop |
| 78 | +``` |
| 79 | + |
| 80 | +### 關閉資料庫並清除資料 |
| 81 | +``` |
| 82 | +$ npm run clean |
| 83 | +``` |
0 commit comments