Flyway是一个用于数据库迁移的开源工具,它可以帮助开发人员轻松地管理数据库架构的变化。Flyway通过迁移来更新数据库,迁移可以使用特定于数据库的SQL语法或者用于高级数据库转换的Java编写。Flyway支持两种类型的迁移:有版本的迁移和可重复的迁移。有版本的迁移具有唯一的版本号,仅应用一次;而可重复的迁移没有版本号,每当它们的校验和发生变化时都会被(重新)应用。
Flyway支持多种构建工具,包括Maven和Gradle,并且可以与多种数据库配合使用,如MySQL、PostgreSQL、SQL Server等。此外,Flyway还提供了第三方插件的支持,可以与其他构建工具和框架集成使用。
对于开发人员来说,Flyway的简单、专注和强大的特点使得数据库迁移变得更加容易和可靠。Flyway可以在Windows、macOS、Linux、Docker和Java上运行,因此非常灵活。
Flyway由Redgate公司开发,遵循Apache许可证2.0发布。
Flyway的工作原理
Flyway在第一次执行时,会创建一个默认名为flyway_schema_history的历史记录表,这张表会用来跟踪或记录数据库的状态,然后每次项目启动时都会自动扫描在resources/db/migration下的文件的版本号并且通过查询flyway_schema_history来判断是否有新增文件,从而判断是否进行迁移。
默认的查找 migration 的路径为 classpath:db/migration ,对应 SQL 文件可放置在src/main/resources/db/migration 下,Java 类可放置在 src/main/java/db/migration 下。
Flyway在第一次执行时,