Java 将公共架构迁移到1.2版失败

Java 将公共架构迁移到1.2版失败,java,swing,flyway,Java,Swing,Flyway,我正在springToolset中编写swing数据库应用程序——基于eclipse的IDE和maven。下面是我的简单db连接代码,并使用flyway进行迁移 主类 public static void main(final String[] args) throws SQLException { final BasicDataSource ds = new BasicDataSource(); ds.setDriverClassName("org.h2

我正在springToolset中编写swing数据库应用程序——基于eclipse的IDE和maven。下面是我的简单db连接代码,并使用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)标准,模式名称为:

V1_uuuinit_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的辅导,请检查您的数据库。Flyway以前已针对配置的架构运行,迁移失败。如果可以放弃该模式,只需发出
flyway.clean()
,就可以重新开始。如果没有,则必须在继续之前手动执行清理。

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

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

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


com.h2数据库
氢
1.3.173
公共dbcp
公共dbcp
1.4
com.googlecode.flyway
飞道核心
2.3.1
我相信H2的一些较新版本与这些示例不兼容,这会导致问题

你能试试这个吗

问候,,
Albert Attard

将架构“PUBLIC”迁移到版本X.X失败可能经常出现在控制台或报表文件中,但可能掩盖了SQL中更严重的错误。当我遇到这个问题时,我后来注意到target/db文件夹中有一个名为.trace.db的文件。当我在文本编辑器中查看此跟踪文件时,它向我显示了我遇到的确切SQL错误,在我的示例中,我尝试使用无效的列名插入。

我删除了目标/db中先前生成的数据库,它为我解决了问题,感谢您的重播。。。
<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>