当前位置: 首页 > 知识库问答 >
问题:

Flyway可重复脚本抛出表不存在错误

郁明诚
2023-03-14

我目前正试图将我的版本化脚本精简为一个基线脚本(我们不为flyway付费,所以这很痛苦)。所以我删除了我的模式,并试图运行我的一个大脚本,它包含了我所拥有的一切。我从我的DBeaver客户端导出了DDL。然而,当启动我的应用程序时,我得到了这个错误:

SQL State  : 42P01
Error Code : 0
Message    : ERROR: relation schema-name.my_table_name does not exist
  Position: 13
Location   : db/migration/aaa/R__01_my_script_name.sql 
Line       : 3
Statement  : DELETE FROM "schema-name.my_table_name" WHERE field_name = 'blah' OR field_name = 'blah2'

我认为这个错误是因为可重复脚本在版本控制之前运行,而版本控制脚本创建了所有的表。我的理解是flyway最后运行可重复脚本。我是不是丢了什么东西还是什么?下面是我的目录结构:

db
 --> migration
     --> my client
       -->R__01_repeatable.sql
       -->V__01_baseline.sql

如果您需要更多信息,请让我知道,从我这里是我的飞行路线属性

  flyway:
    locations: classpath:/db/migration/shared,classpath:/db/migration/${app.client}
    baseline-on-migrate: true
    base_line_version: 1
    placeholders:
      schema-name: ${spring.jpa.properties.hibernate.default_schema}
    schemas: ${spring.jpa.properties.hibernate.default_schema}
    enabled: true

共有1个答案

班言
2023-03-14

查看脚本,V 脚本命名不正确

此处记录了命名约定

特别是,双下划线需要出现在 V 之后,因此正确的名称将V01__baseline.sql

可重复迁移在版本化迁移之后运行,因此一旦正确检测到版本化迁移,这应该可以解决问题

 类似资料: