使用Liquibase在H2資料庫建立資料表。
範例環境:
- macOS BigSur version 10.15.5
- Liquibase 4.10.0
事前要求
參考「Mac 安裝Liquibase by Homebrew」安裝liquibase。
Liquibase設定
Liquibase使用liquibase.properties
設定資料庫連線資訊及要套用的changelog。在任意目錄(e.g. liquibase-demo
)新增liquibase.properties
設定連線到內建H2資料庫的內容如下。
liquibase.properties
# Enter the path for your changelog file.
changeLogFile=changelog.sql
#### Enter the Target database 'url' information ####
liquibase.command.url=jdbc:h2:tcp://localhost:9090/mem:dev
# Enter the username for your Target database.
liquibase.command.username: dbuser
# Enter the password for your Target database.
liquibase.command.password: letmein
Changelogs
在liquibase.properties
同目錄建立changelog.sql
內容如下。
SQL註解(comment)是Liquibase定義用來辨識要執行的動作:
--liquibase formatted sql
- 為SQL format changelog內容的必要開頭。--changeset
- 下面放要執行的SQL script。格式:
--changeset author:id attribute1:value1 attribute2:value2 [...]
。
author:id
作為changeset的唯一辨識名稱。author
可任意命名,通常放修改者或資料表名稱;id
僅供辨識不必須是數字且和執行順序無關。
changelog.sql
--liquibase formatted sql
--changeset employee:1
CREATE TABLE employee (
id int PRIMARY KEY auto_increment NOT NULL,
name varchar(60) UNIQUE NOT NULL,
age int,
create_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
)
建立資料表
在liquibase.properties
所在目錄以命令列輸入liquibase update
依liquibase.properties
的參數執行changelog.sql
的script更新H2資料庫狀態。
~/../liquibase-demo$ liquibase update
在Liquibase內含的H2管理介面可看到產生的DATABASECHANGELOG
、DATABASECHANGELOGLOCK
、EMPLOYEE
資料表。
或在H2 Shell檢視。輸入SHOW TABLES
。
sql> SHOW TABLES;
TABLE_NAME | TABLE_SCHEMA
DATABASECHANGELOG | PUBLIC
DATABASECHANGELOGLOCK | PUBLIC
EMPLOYEE | PUBLIC
(3 rows, 3 ms)
輸入SHOW COLUMNS FROM employee
檢視EMPLOYEE
table schema。
sql> SHOW COLUMNS FROM employee;
FIELD | TYPE | NULL | KEY | DEFAULT
ID | INTEGER | NO | PRI | NULL
NAME | CHARACTER VARYING(60) | NO | UNI | NULL
AGE | INTEGER | YES | | NULL
CREATE_TIME | TIMESTAMP | NO | | CURRENT_TIMESTAMP
(4 rows, 14 ms)
查看DATABASECHANGELOG
資料表可看到多了一筆紀錄。
sql> SELECT * FROM databasechangelog;
ID | AUTHOR | FILENAME | DATEEXECUTED | ORDEREXECUTED | EXECTYPE | MD5SUM | DESCRIPTION | COMMENTS | TAG | LIQUIBASE | CONTEXTS | LABELS | DEPLOYMENT_ID
1 | employee | changelog.sql | 2022-05-24 16:43:01.221643 | 1 | EXECUTED | 8:28bb5eee313e523c6f750d4473e7bb0b | sql | | null | 4.10.0 | null | null | 3381780263
(3 rows, 5 ms)
沒有留言:
張貼留言