我们在生产中有一个数据库,它在“user”表中已有很多行。请考虑flyway网站上的以下声明:
如果您有一个尚未被Flyway填充的现有数据库 这是要走的路:
- 创建一个初始迁移脚本,重新创建当前的迁移脚本 状态并给它一个低版本号。
- 使用flyway:init创建元数据表并将此脚本设置为当前版本。
我想使用flyway来管理我的架构和数据库中的各种常量,但我不希望V1__Base_version.sql包含我们当前生产用户的帐户信息,特别是考虑到它存储在SCM中。如果我正确地理解了这些指令,我需要能够用V1__Base_version.sql“重新创建[my]当前状态”。
那么只使用模式创建初始迁移并且常量可以正常工作吗?或者我们工作站上的数据库是否需要与生产中的数据库100%匹配?
答案 0 :(得分:7)
你是对的。 init命令用于使用版本标记生产数据库。
您创建的初始迁移(使用PROD db的结构)适用于其他环境。它永远不会在PROD上运行,因为它的版本将低于init版本。但是,它会对齐所有环境,以便后续迁移可以平等地应用于所有环境。