# Tech

DATABASE MIGRATION IN SPRING-BOOT (MAVEN)

2017-09-18

Яагаад өгөгдлийн санг шинэчлэх шаардлагатай вэ?

Ямарваа нэгэн програм өгөгдлийн сантай програм хөгжүүлж байх үед өгөгдлийн бүтэц өөрчлөгдөх тохиолдолууд гардаг.
Тэрхүү програмыг багаар эсвэл олон сервер дээр ижил орчин бүрдүүлэн ажиллаж байх тохиолдолд өөрчлөлтүүдийг алдаагүй шинэчлэн оруулах хэрэгтэй болно.

Spring-Boot (maven) дээр Database Migration хийх

Spring-Boot дээр flyway-г ашиглан өгөгдлийн санг амархан шинэчлэж болно. Maven прожект үүсгээд pom.xml файл дээр flyway-core-ийг нэмж өгөх хэрэгтэй.

pom.xml-ийн жишээ:

application.properties эсвэл application.yml файл дээр өгөгдлийн сангийн холболтын тохиргоогоо өөрчлөнө.

application.properties-ийн жишээ ({} хаалтын дотор харгалзах утгуудыг өгнө):

spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.name={schema name}
spring.datasource.host={host IP}
spring.datasource.url=jdbc:mysql://${spring.datasource.host}/${spring.datasource.name}?useUnicode=true&characterEncoding=utf8
spring.datasource.username={user name}
spring.datasource.password={password}
spring.jpa.hibernate.ddl-auto=validate
spring.main.web-environment=false
logging.level.jdbc=OFF
logging.level.jdbc.sqltiming=DEBUG
flyway.baseline-on-migrate=true
flyway.url=${spring.datasource.url}
flyway.user=${spring.datasource.username}
flyway.password=${spring.datasource.password}
flyway.encoding=UTF-8

Шинэчлэх болсон өөрчлөлтийг resource.db.migration хавтас дотор хувилбар болон нэрийг нь оруулан нэмж өгнө.

Файлын нэрийг өгөхдөө дараах дүрмээр өгнө.
V{хувилбарын дугаар}__{өөрчлөлтийн агуулга}.sql

файл нэмэх жишээ:

Уг програмыг "mvn spring-boot:run" гэж консулаас ажилуулан үр дүнг нь шалгана.

програм ажилуулах жишээ:

Өгөгдлийн сан дээр өөрчлөлт нь орж "schema_version" гэсэн хүснэгт дээр үр дүн нь орж ирдэг.

Багаараа энэхүү өөрчлөлтийг авж хийж байхын тулд энэхүү прожектыг git дээр байршуулвал тохиромжтой.

https://flywaydb.org/

Сэтгэгдэл

gerelmaa.n