spring mvc是通过maven来进行管理的
1:在pom.xml中的dependencies里面加入
org.flywaydb
flyway-core
4.0.3
2:在pom.xml中的plugins中加入
org.flywaydb
flyway-maven-plugin
4.0.3
3:设置flyway相关属性可以让flyway可以与mysql进行连接
3.1:在pom.xml同级目录下新建flyway.properties文件
文件的内容大致为:
flyway.user=username
flyway.password=password
flyway.url=jdbc:mysql://localhost:3306/database?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull
flyway.baselineOnMigrate=true
这个方法也可以改变文件的名称,也就是说可以不叫flyway.properties ,可以命名为xxxxx.properties
但是这个在最后执行命令的时候要加上参数 -Dflyway.configFile=
xxxxx.properties
注意这个文件必须要与pom.xml同级
3.2:在plugin里面进行配置,例如:
org.flywaydb
flyway-maven-plugin
4.0.3
databaseUser
databasePassword
schemaName
...
3.3:通过Maven Properties来进行配置,在pom.xml中的properties里面设置,例如:
...
databaseUser
databasePassword
schemaName
...
...
4:在resources文件夹下新建db/migration目录
在这个目录里面可以创建你的migration文件。
注意文件的命名规则:
Where:
Example: V1_1_0__my_first_migration.sql
5:最后一步就是执行flyway
mvn clean flyway:migrate
6:调用的过程中出现过的错误
6.1:flyway转化为mysql表之后中文乱码 这是因为我刚开始设置的是
flyway.url=jdbc:mysql://localhost:3306/database
与数据库连接的编码没有设置为utf-8造成的,改为
flyway.url=jdbc:mysql://localhost:3306/database?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull
就可以了
6.2:flyway.url是必须项,不设置会报错,具体的属性描述见https://flywaydb.org/documentation/maven/migrate
6.3:出现错误 Found non-empty schema "public" without metadata table! Use init() or set initOnMigrate to true to initialize the metadata table.
这是因为没有加入
flyway.baselineOnMigrate=true 这个属性 ,所以报错啦
7:以上是通过命令来执行flyway,那能不能够通过程序运行来执行flyway呢,这个是可以的。
步骤可以是一下:
第一、二步跟上面的1、2步一致。
第三步:在resources下面创建spring-context-flyway.xml文件
文件里面的代码如下:
flyway Configuration
其中dataSource指向的是mybatis.xml文件中定义的mysql数据源配置。
第四步:在web.xml中的
contextConfigLocation
.......
中加入
classpath:spring-context-flyway.xml
最终变成
contextConfigLocation
......
classpath:spring-context-flyway.xml
启动程序,就会自动执行flyway
执行之后在数据库里面会增加一个表名为schema_version
表结构如下:
ok,大功告成啦!