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

Flyway:无元数据表的非空架构

卢出野
2023-03-14

<代码>找到非空架构“public”,没有元数据表!使用init()或将initOnMigrate设置为true来初始化元数据表

  • 我正在使用Postgres 9.2和Postgis 2.0。这意味着在默认情况下,当我创建新数据库时,将在名为spatial\u ref\u sys的模式中创建一个表

当我在这个数据库上运行flyway migrate时,我得到了上面的错误。运行init似乎创建了public。schema\u version表并将版本1标记为已成功,而不实际运行迁移文件。我还尝试了initOnMigrate的组合,但没有成功。Flyway未配置为管理任何架构

关于如何在这种情况下运行迁移,有什么想法吗?

共有3个答案

乐正涵忍
2023-03-14

我认为此错误仅在Flyway的最新版本(即4.03以上)中出现。我在早期项目中没有收到,但在我的最新项目中使用Flyway 5.07版本时收到了它。将解决我问题的代码放在这里

public class FlywayConfig {

    @Autowired
    DataSource dataSource;
    @Autowired
    Config config;

    @Bean
    public Flyway flyway(){
        Flyway flyway = new Flyway();
        flyway.setDataSource(dataSource);
         flyway.setSqlMigrationPrefix("V");
            flyway.setLocations(new String[] { config.getSqlLocation() });
            flyway.setBaselineOnMigrate(true);
            // *******************flyway.clean(); ********************// this will wipe out the DB, be careful
            flyway.migrate();
        return  flyway;

    }

}
管翼
2023-03-14

如果您正在使用Gradle,您可以运行

./gradlew -Dflyway.schemas=public flywayClean flywayMigrate

其中public是包含schema\u versions表的数据库的名称。这应该删除表和元数据,并运行迁移以使其恢复最新。

这将删除公共架构中的所有数据

翁文康
2023-03-14

标题有点矛盾,因为当您通过PostGIS扩展安装公共模式中的许多对象时,数据库确实不是原始数据库。

你要么可以

  • 设置飞行路线。模式到一个新的模式,比如my\u app,然后将通过Flyway自动创建。然后,您的应用程序应该使用此应用程序,而不是公共应用程序(推荐
 类似资料:
  • 我正在尝试使用kotlin Spring Boot、jpa和postgreSQL配置flyway。我的gradle依赖项是: 我的application.properties文件是: 使用jpa和hibernate创建表和条目按预期工作。但是,在空数据库上进行示例迁移会导致: 我的目录结构是spring Initializer生成的默认目录结构,我的迁移位于:

  • 我试图使用Flyway来版本模块化应用程序的数据库。每个模块都有自己独立的表集和迁移脚本,这些脚本将控制该表集的版本控制。 Flyway允许我为每个模块指定不同的元数据表——这样我就可以独立地版本每个模块。当我尝试升级应用程序时,我为每个模块运行一个迁移过程,每个模块都有自己的表和一组脚本。请注意,这些表都在同一个架构中。 但是,当我尝试迁移我的应用程序时,第一次迁移是唯一有效的。后续迁移失败,出

  • 我刚刚在Maven学习Spring Boot,遇到了一个无法解决的错误。我从Flyway附加了一个依赖项,当我想安装它时(我单击Lifecycle上的install),会出现以下错误: 找到非空架构“PUBLIC”,但没有架构历史记录表。使用baseline()或将baselineOnMigrate设置为true来初始化架构历史记录表。 这可能是什么原因造成的,如何修复? 我正在使用Java8,我

  • 问题内容: 我可以让MySQL返回数据库中的所有非空表吗?类似于“ SHOW TABLES”,但仅那些不为空的表。 问题答案: “ information_schema”应包含相关详细信息。你可以试试 从选择性数据库中进行选择。您还可以按以下条件过滤:

  • 当我说 table.drop() / metadata.drop_all() sqlacalchemy是否支持alter table、create view、create trigger、schema升级功能? 如何根据表对象的依赖关系对其排序? 如何以字符串形式获取创建表/删除表输出? 我如何子类表/列以提供某些行为/配置? 当我说 table.drop() / metadata.drop_al

  • 我正在尝试使用kotlin Spring boot、jpa和PostgreSQL配置flyway。我的分级依赖关系是: 我只有一个迁移,它是在这里找到的示例迁移的kotlinized版本,我对其进行了修改,以查看以下内容: 我错过了什么?为什么Flyway一直抱怨在数据库完全为空(干净的docker映像)的情况下,发现没有模式历史表的非空模式“public”?