将架构PUBLIC迁移到版本1.2失败

时间:2014-07-08 09:22:56

标签: java swing flyway

springToolset 基于-eclipse的IDE和 maven 中编写 swing数据库应用程序。所以这是我的简单数据库连接代码,并使用flyway进行迁移。

主要课程

    public static void main(final String[] args) throws SQLException {
        final BasicDataSource ds = new BasicDataSource();
        ds.setDriverClassName("org.h2.Driver");
        ds.setUrl("jdbc:h2:target/db");
        ds.setUsername("root");
        ds.setPassword("");

        try {
          final Flyway flyway = new Flyway();
          flyway.setDataSource(ds);
          flyway.migrate(); // line no :12
    }}
根据flyway(2.2.1)标准,

Schema_name 是:

  

V1__init_db.sql

当我运行此代码时出现此错误:

  Exception in thread "main" com.googlecode.flyway.core.api.FlywayException: 
Migration of schema "PUBLIC" to version 1.2 failed! Please restore backups and roll back database and code!
        at com.googlecode.flyway.core.command.DbMigrate.migrate(DbMigrate.java:199)
        at com.googlecode.flyway.core.Flyway$1.execute(Flyway.java:872)
        at com.googlecode.flyway.core.Flyway$1.execute(Flyway.java:819)
        at com.googlecode.flyway.core.Flyway.execute(Flyway.java:1200)
        at com.googlecode.flyway.core.Flyway.migrate(Flyway.java:819)
        at com.swdb.exApp.Main.main(12)

任何人都知道错误是什么。请帮忙。 这也是来自 Alber Attard here

的tutoiral

3 个答案:

答案 0 :(得分:1)

检查您的数据库。之前,Flyway已针对配置的架构运行,迁移失败。如果您可以放弃架构,只需发出flyway.clean(),您就应该重新开始。如果没有,您必须在继续之前手动执行清理。

答案 1 :(得分:0)

正如Flyway的开发人员所强调的,运行迁移时出现了问题。

理想情况下,我们从头开始。数据库在db目录(target)内名为ds.setUrl("jdbc:h2:target/db");的文件夹中创建。删除db目录。这将删除数据库中的所有内容。这将导致Flyway再次启动并执行迁移脚本。

请确保您使用的是正确的版本。本教程使我们了解以下版本(通过Maven管理哪些依赖项):

<dependencies>
  <dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
    <version>1.3.173</version>
  </dependency>
  <dependency>
    <groupId>commons-dbcp</groupId>
    <artifactId>commons-dbcp</artifactId>
    <version>1.4</version>
  </dependency>
  <dependency>
    <groupId>com.googlecode.flyway</groupId>
    <artifactId>flyway-core</artifactId>
    <version>2.3.1</version>
  </dependency>
</dependencies>

我相信一些较新版本的H2与这些示例和我的原因问题不兼容。

你能试试吗?

此致 Albert Attard

答案 2 :(得分:0)

&#39;模式的迁移&#34; PUBLIC&#34;版本X.X失败了!&#39;通常可以出现在控制台或报表文件中,但可能会使用SQL屏蔽更严重的错误。当我遇到这个问题时,我后来注意到目标/ db文件夹有一个名为.trace.db的文件。当我在文本编辑器中查看此跟踪文件时,它向我显示了我得到的确切SQL错误,在我的情况下,我尝试使用无效的列名称插入。