New file |
| | |
| | | package com.genersoft.iot.vmp.conf; |
| | | |
| | | import org.flywaydb.core.Flyway; |
| | | import org.flywaydb.core.api.FlywayException; |
| | | import org.slf4j.Logger; |
| | | import org.slf4j.LoggerFactory; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.context.annotation.Configuration; |
| | | |
| | | import javax.annotation.PostConstruct; |
| | | import javax.sql.DataSource; |
| | | |
| | | /** |
| | | * æ°æ®åºèªå¨åçº§èæ¬ |
| | | */ |
| | | @Configuration |
| | | public class FlywayConfig { |
| | | |
| | | private final static Logger logger = LoggerFactory.getLogger(FlywayConfig.class); |
| | | |
| | | @Autowired |
| | | private DataSource dataSource; |
| | | |
| | | @PostConstruct |
| | | public void migrate() { |
| | | Flyway flyway = Flyway.configure() |
| | | .dataSource(dataSource) |
| | | .locations("db/migration")//sqlæä»¶åç§°è§åï¼"V20210625.17.30__V1.0.sql" |
| | | // èªå¨å建flywayå
æ°æ®è¡¨æ è¯ |
| | | .baselineOnMigrate(true) |
| | | .baselineVersion("0") |
| | | // ç¦æ¢flywayæ§è¡æ¸
ç |
| | | .cleanDisabled(true) |
| | | .table("flyway_schema_history_wvp") |
| | | // 对äºå¼åç¯å¢, å¯è½æ¯å¤äººåä½å¼å, å¾å¯è½å
apply äºèªå·±æ¬å°çææ° SQL 代ç , ç¶ååç°å
¶ä»åäºæ©å
æ¶åæäº¤ç SQL 代ç è¿æ²¡æ apply, |
| | | // æä»¥ å¼åç¯å¢åºè¯¥è®¾ç½® spring.flyway.outOfOrder=true, è¿æ · flyway å°è½å è½½æ¼æçèçæ¬ SQL æä»¶; |
| | | // èç产ç¯å¢åºè¯¥è®¾ç½® spring.flyway.outOfOrder=false |
| | | .outOfOrder(true) |
| | | .encoding("UTF-8") |
| | | .load(); |
| | | try { |
| | | flyway.migrate(); |
| | | } catch (FlywayException e) { |
| | | logger.error("[æ°æ®åºèªå¨å级]é
ç½®ç¬¬ä¸æ¬¡å è½½åºé", e); |
| | | try { |
| | | flyway.repair();//çæçæ¬è®°å½è¡¨ |
| | | logger.info("[æ°æ®åºèªå¨å级]é
ç½®ä¿®å¤æå"); |
| | | flyway.migrate(); |
| | | logger.info("[æ°æ®åºèªå¨å级]é
ç½®éæ°å è½½æå"); |
| | | } catch (Exception e1) { |
| | | logger.error("[æ°æ®åºèªå¨å级]é
ç½®ç¬¬äºæ¬¡å è½½åºé", e1); |
| | | throw e1; |
| | | } |
| | | } |
| | | } |
| | | |
| | | } |