官方文档:https://flywaydb.org/documentation/

一、配置conf

[root@master migrate]# vim /root/flyway-5.2.4/conf/flyway.conf
flyway.url=jdbc:mysql://192.168.10.180:3306/test_flyway
flyway.user=root
flyway.password=123456
flyway.cleanDisabled=true
flyway.baselineOnMigrate=true
flyway.cleanDisabled=false    #如果已经存在的数据库则不进行clean操作
flyway.locations=filesystem:/root/migrate    #SQL的路径

二、初始化

[root@master migrate]# /root/flyway-5.2.4/flyway migrate
Flyway Community Edition 5.2.4 by Boxfuse
Database: jdbc:mysql://192.168.10.180:3306/test_flyway (MySQL 5.6)
Successfully validated 1 migration (execution time 00:00.044s)
Current version of schema `test_flyway`: << Empty Schema >>
Migrating schema `test_flyway` to version 1 - Create person table
Successfully applied 1 migration to schema `test_flyway` (execution time 00:01.029s)

三、查看

[root@master migrate]# /root/flyway-5.2.4/flyway info
Flyway Community Edition 5.2.4 by Boxfuse
Database: jdbc:mysql://192.168.10.180:3306/test_flyway (MySQL 5.6)
Schema version: 1

+-----------+---------+---------------------+------+---------------------+---------+
| Category | Version | Description | Type | Installed On | State |
+-----------+---------+---------------------+------+---------------------+---------+
| Versioned | 1 | Create person table | SQL | 2020-10-29 02:09:11 | Success |
+-----------+---------+---------------------+------+---------------------+---------+

四、进行第二次迁移(可以升级DML语句)

[root@master migrate]# vi V2__Add_people.sql     #必须是双下划线
insert into PERSON (ID, NAME) values (1, 'Axel');
insert into PERSON (ID, NAME) values (2, 'Mr. Foo');
insert into PERSON (ID, NAME) values (3, 'Ms. Bar');

[root@master migrate]# /root/flyway-5.2.4/flyway migrate

五、创建可重复迁移

[root@master migrate]# vi R__People_view.sql
CREATE OR REPLACE VIEW people AS
    SELECT id, name FROM person;
[root@master migrate]# /root/flyway-5.2.4/flyway migrate
[root@master migrate]# /root/flyway-5.2.4/flyway info
Flyway Community Edition 5.2.4 by Boxfuse
Database: jdbc:mysql://192.168.10.180:3306/test_flyway (MySQL 5.6)
Schema version: 2

+------------+---------+---------------------+------+---------------------+---------+
| Category | Version | Description | Type | Installed On | State |
+------------+---------+---------------------+------+---------------------+---------+
| Versioned | 1 | Create person table | SQL | 2020-10-29 02:09:11 | Success |
| Versioned | 2 | Add people | SQL | 2020-10-29 02:13:09 | Success |
| Repeatable | | People view | SQL | 2020-10-29 02:16:12 | Success |
+------------+---------+---------------------+------+---------------------+---------+

六、修改迁移

[root@master migrate]# vi R__People_view.sql        #修改新的语句
CREATE OR REPLACE VIEW people AS
    SELECT id, name FROM person WHERE name like 'M%';
[root@master migrate]# /root/flyway-5.2.4/flyway info

[root@master migrate]# /root/flyway-5.2.4/flyway migrate        #迁移
[root@master migrate]# /root/flyway-5.2.4/flyway info
Flyway Community Edition 5.2.4 by Boxfuse
Database: jdbc:mysql://192.168.10.180:3306/test_flyway (MySQL 5.6)
Schema version: 2

+------------+---------+---------------------+------+---------------------+------------+
| Category | Version | Description | Type | Installed On | State |
+------------+---------+---------------------+------+---------------------+------------+
| Versioned | 1 | Create person table | SQL | 2020-10-29 02:09:11 | Success |
| Versioned | 2 | Add people | SQL | 2020-10-29 02:13:09 | Success |
| Repeatable | | People view | SQL | 2020-10-29 02:16:12 | Superseded |
| Repeatable | | People view | SQL | 2020-10-29 02:20:56 | Success |
+------------+---------+---------------------+------+---------------------+------------+

七、创建和撤销迁移

[root@master migrate]# vi U2__Add_people.sql
DELETE FROM PERSON;
[root@master migrate]# vi U1__Create_person_table.sql
DROP TABLE PERSON;

八、撤销上一次迁移

[root@master migrate]# /root/flyway-5.2.4/flyway undo        #社区版本不支持undo操作
ERROR: Flyway Pro Edition or Flyway Enterprise Edition upgrade required: undo is not supported by Flyway Community Edition.
最后修改日期: 2020年10月28日

作者

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。