我有一个 Flyway 脚本,它创建一个新表以将报告数据存储到另一个表的数据中。
我在从 Java 对象剪切和粘贴时犯了一个错误,正如您在下面的脚本中看到的,“data_Item_id”应该读取“data_item_id”。现在,在数据库中,外键已以小写形式生成,因此现在唯一的缺陷似乎是在我的 Flyway 脚本中。
我不能只更改脚本,因为这会导致 Flyway 抛出错误,因为脚本不再是原始的,所以有人可以建议一种方法来纠正这个拼写错误吗?也许一个新脚本可以删除引用并重新创建它?
create table if not exists reporting
(
reporting_id BIGSERIAL unique not null,
data_item_id BIGINT references data_item (data_Item_id) not null,
address VARCHAR,
name VARCHAR,
primary key (reporting_id)
);
您应该能够修复该文件,然后运行
flyway repair
来更新校验和。也就是说,如果 Flyway 抱怨这一点,则将假定它已“成功”运行。如果只有一个数据库,快速修复方法是手动修复,然后更新脚本并运行修复。
或者,您可以“向前修复”,即添加另一个脚本,正如您所说,撤消之前的更改并重做它。如果您有多个环境,并且此迁移已部署到某些环境,但未部署到其他环境,则向前修复可能是正确的做法。
如果您有 Teams 版本,您可以创建一个
undo
脚本来取消创建,在运行该脚本的环境中运行该撤消操作,然后修复该脚本并运行修复,或者创建一个新的迁移,然后使用 SkipExecute
关于“坏人”