使用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)
沒有留言:
張貼留言