flyway坑

flyway   用于多人开发时的一个管理数据库的工具

比如A、B、C同时开发一个项目,A在某个表加了一列,B也在某个表加了一列,C又改了个什么属性,最后要合并的话不太方便,所以就用flyway这玩意,自己写好sql语句,flyway会自动帮我们执行数据库操作,最后统一起来也非常方便快捷,大致就是这个意思吧。。  

因为有个这么玩意,所以想动手实现下,其实非常简单,但是启动一直报错。。

刚开始搞不懂状况,明显我目录里已经有指定路径了,但是还是一直报错:

好家伙,最后才发现,原来是idea的原因,之前用eclipse用习惯了,所以我建立目录的时候是db.migration一起输入的,导致idea创建目录是db.migration。发现原因后,只能一个个建了,先建立db,再建立migration

最后删掉db.migration,没报错了。。

 

03-18
### Flyway 数据库迁移工具使用指南 Flyway是一款功能强大的开源数据库版本管理工具,其设计目标是简化数据库变更的管理和部署过程。以下是关于如何使用Flyway进行数据库迁移的具体说明。 #### 配置Flyway环境 为了使Flyway正常工作,需要先创建一个配置文件`flyway.conf`,该文件用于定义数据库连接及其他必要的参数[^2]。 以下是一个典型的配置示例: ```properties flyway.url=jdbc:mysql://localhost:3306/my_database flyway.user=my_user flyway.password=my_password flyway.baselineOnMigrate=true flyway.locations=filesystem:sql/migrations flyway.schemas=public ``` - `flyway.url`: 定义数据库连接地址。 - `flyway.user`: 设置访问数据库所需的用户名。 - `flyway.password`: 提供对应的密码。 - `flyway.baselineOnMigrate`: 如果启用此选项,在首次运行迁移时会自动为已存在的数据库打上基线版本标记。 - `flyway.locations`: 指定存储SQL脚本的位置。 - `flyway.schemas`: 明确要操作的目标数据库模式。 #### 创建迁移脚本 Flyway支持两种类型的迁移脚本:SQL脚本和Java类。推荐的做法是以V{version}__{description}.sql命名方式编写SQL脚本,并将其存放在指定路径下(如`sql/migrations/`)。例如: ```sql -- V1_0__Create_initial_tables.sql CREATE TABLE users ( id INT PRIMARY KEY, name VARCHAR(50), email VARCHAR(100) ); ``` 每条迁移都应具有唯一编号以便按顺序执行[^3]。 #### 执行常见命令 Flyway提供了多种内置命令来完成不同的任务,常用的有以下几个: - **migrate**: 将所有未应用的迁移应用于目标数据库[^1]。 ```bash flyway migrate ``` - **clean**: 删除目标数据库中的所有对象,需谨慎使用。 ```bash flyway clean ``` - **info**: 展示当前数据库的状态以及所有可用迁移的信息。 ```bash flyway info ``` - **validate**: 确认所有的迁移是否按照预期顺序排列且无错误发生。 ```bash flyway validate ``` - **baseline**: 当已有数据存在于生产环境中而尚未被Flyway管理时,可以通过此命令为其建立初始基准版本号。 ```bash flyway baseline ``` - **repair**: 修改`schemahistory`表以修复潜在损坏情况或解决校验和冲突等问题[^4]。 ```bash flyway repair ``` #### 解决常见的问题 当遇到诸如“checksum mismatch”的报错提示时,通常是由于不同环境下的同一份迁移脚本发生了更改所引起。此时可考虑重新生成受影响部分的新版本或者通过调整`ignoreMissingMigrations`等相关属性跳过特定异常处理逻辑。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值