【Liquibase】DB 작성·테이블 정의 변경

신규 스타터 프로젝트 작성



Liquibase와 MySQL 선택



application.properties에 DB 정보 넣기



MySQL에서 "testdatabase"라는 데이터베이스 만들기
spring.datasource.url=jdbc:mysql://localhost:3306/testDataBase?serverTimezone=UTC&createDatabaseIfNotExist=true
spring.datasource.username=root
spring.datasource.password=system
spring.jpa.database=MYSQL
spring.liquibase.change-log=classpath:db/db.changelog-master.yaml

빌드 종속성 추가



build.gradle의 dependencies에 spring DATA JPA 추가
dependencies {
    implementation 'org.springframework.boot:spring-boot-starter'
    implementation 'org.liquibase:liquibase-core'
    runtimeOnly 'mysql:mysql-connector-java'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
}

처음 읽을 수 있는 yaml 파일 만들기



Sample\src\main\resources\db 아래에 db.changelog-master.yaml을 넣습니다.
(application.properties에 작성된 파일 이름)
내용은 db.changelog 아래에 둔 파일명을 기재
databaseChangeLog:
- include:
    file: db/changelog/a.yaml

이제 db.changelog 아래에 yaml 파일이 자동으로 생성됩니다.

테이블 정의



방금 자동 생성된 yaml 파일에 테이블 정의를 기재해 간다
databaseChangeLog:
  - changeSet:
      id: 1
      author: aaa
      changes:
        - createTable:
            tableName: user
            columns:
              - column:
                  name: id
                  type: int
                  autoIncrement: true
                  constraints:
                    primaryKey: true
                    nullable: false
              - column:
                  name: firstname
                  type: varchar(50)
              - column:
                  name: lastname
                  type: varchar(50)
                  constraints:
                    nullable: false
              - column:
                  name: state
                  type: char(2)

※yaml 파일은 반드시 반각 스페이스로 들여쓰기

실행



a5m2에서 testdatabase라는 DB와 user 테이블이 생성되었는지 확인




테이블 정의가 변경된 경우



◆ 컬럼 추가

db.changelog-master.yaml에 파일 이름 추가
databaseChangeLog:
- include:
    file: db/changelog/a.yaml
- include:
    file: db/changelog/b.yaml

자동 생성 된 db.changelog 아래의 yaml 파일에 ALTER 문 작성
databaseChangeLog:
  - changeSet:
      id: 2
      comment: tuika
      author: takahashi
      changes: 
        - addColumn:
            catalogName: testdatabase
            columns:
              - column:
                  name: age
                  remarks: memo
                  type: bigint
            schemaName: public
            tableName: user

※databaseChangeLog의 id는 고유 키이므로 중복하지 않는 것

실행 후 A5M2 확인


databaseChangeLog에 b.yaml 데이터가 삽입됨


age 열이 추가되었습니다.

좋은 웹페이지 즐겨찾기