Flyway未报告相关的Oracle错误

时间:2019-02-26 15:04:32

标签: flyway

我正在针对Oracle 12.2使用Flyway CE 5.2.4 Maven插件。无论迁移脚本中的实际错误如何,Flyway都会报告以下错误:

Closed Connection
Unable to commit transaction
Unable to restore autocommit to original value for connection

以一个非常简单的迁移脚本为例,该脚本带有一个不存在的表:

INSERT INTO bad_table_name (column1) VALUES (1);

它在SQL * Plus,TOAD等中运行时给出了预期的 ORA-00942:表或视图不存在错误,但是在Flyway中运行时给出了以下错误;在Flyway CE 5.2.1中也会发生相同的结果。

[ERROR] Error while closing JDBC statement
java.sql.SQLRecoverableException: Closed Connection
        at oracle.jdbc.driver.PhysicalConnection.needLine(PhysicalConnection.java:4220)
        at oracle.jdbc.driver.OracleStatement.closeOrCache(OracleStatement.java:1431)
        at oracle.jdbc.driver.OracleStatement.close(OracleStatement.java:1410)
        at oracle.jdbc.driver.OracleStatementWrapper.close(OracleStatementWrapper.java:102)
        at org.flywaydb.core.internal.jdbc.JdbcUtils.closeStatement(JdbcUtils.java:114)
        at org.flywaydb.core.internal.jdbc.JdbcTemplate.executeStatement(JdbcTemplate.java:243)
        at org.flywaydb.core.internal.sqlscript.StandardSqlStatement.execute(StandardSqlStatement.java:42)
        at org.flywaydb.core.internal.sqlscript.DefaultSqlScriptExecutor.executeStatement(DefaultSqlScriptExecutor.java:189)
        at org.flywaydb.core.internal.sqlscript.DefaultSqlScriptExecutor.execute(DefaultSqlScriptExecutor.java:125)
        at org.flywaydb.core.internal.resolver.sql.SqlMigrationExecutor.execute(SqlMigrationExecutor.java:77)
        at org.flywaydb.core.internal.command.DbMigrate.doMigrateGroup(DbMigrate.java:367)
        at org.flywaydb.core.internal.command.DbMigrate.access$200(DbMigrate.java:54)
        at org.flywaydb.core.internal.command.DbMigrate$3.call(DbMigrate.java:284)
        at org.flywaydb.core.internal.jdbc.TransactionTemplate.execute(TransactionTemplate.java:74)
        at org.flywaydb.core.internal.command.DbMigrate.applyMigrations(DbMigrate.java:281)
        at org.flywaydb.core.internal.command.DbMigrate.migrateGroup(DbMigrate.java:246)
        at org.flywaydb.core.internal.command.DbMigrate.access$100(DbMigrate.java:54)
        at org.flywaydb.core.internal.command.DbMigrate$2.call(DbMigrate.java:164)
        at org.flywaydb.core.internal.command.DbMigrate$2.call(DbMigrate.java:161)
        at org.flywaydb.core.internal.database.base.Connection$1.call(Connection.java:147)
        at org.flywaydb.core.internal.jdbc.TransactionTemplate.execute(TransactionTemplate.java:74)
        at org.flywaydb.core.internal.database.base.Connection.lock(Connection.java:143)
        at org.flywaydb.core.internal.schemahistory.JdbcTableSchemaHistory.lock(JdbcTableSchemaHistory.java:155)
        at org.flywaydb.core.internal.command.DbMigrate.migrateAll(DbMigrate.java:161)
        at org.flywaydb.core.internal.command.DbMigrate.migrate(DbMigrate.java:139)
        at org.flywaydb.core.Flyway$1.execute(Flyway.java:1395)
        at org.flywaydb.core.Flyway$1.execute(Flyway.java:1356)
        at org.flywaydb.core.Flyway.execute(Flyway.java:1711)
        at org.flywaydb.core.Flyway.migrate(Flyway.java:1356)
        at org.flywaydb.maven.MigrateMojo.doExecute(MigrateMojo.java:35)
        at org.flywaydb.maven.AbstractFlywayMojo.execute(AbstractFlywayMojo.java:746)
        at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:132)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
        at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)
        at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)
        at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
        at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:120)
        at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:355)
        at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:155)
        at org.apache.maven.cli.MavenCli.execute(MavenCli.java:584)
        at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:216)
        at org.apache.maven.cli.MavenCli.main(MavenCli.java:160)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
        at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
        at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
        at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
[ERROR] Unable to rollback transaction
java.sql.SQLRecoverableException: Closed Connection
        at oracle.jdbc.driver.PhysicalConnection.getAutoCommit(PhysicalConnection.java:2254)
        at oracle.jdbc.driver.PhysicalConnection.rollback(PhysicalConnection.java:2424)
        at org.flywaydb.core.internal.jdbc.TransactionTemplate.execute(TransactionTemplate.java:90)
        at org.flywaydb.core.internal.command.DbMigrate.applyMigrations(DbMigrate.java:281)
        at org.flywaydb.core.internal.command.DbMigrate.migrateGroup(DbMigrate.java:246)
        at org.flywaydb.core.internal.command.DbMigrate.access$100(DbMigrate.java:54)
        at org.flywaydb.core.internal.command.DbMigrate$2.call(DbMigrate.java:164)
        at org.flywaydb.core.internal.command.DbMigrate$2.call(DbMigrate.java:161)
        at org.flywaydb.core.internal.database.base.Connection$1.call(Connection.java:147)
        at org.flywaydb.core.internal.jdbc.TransactionTemplate.execute(TransactionTemplate.java:74)
        at org.flywaydb.core.internal.database.base.Connection.lock(Connection.java:143)
        at org.flywaydb.core.internal.schemahistory.JdbcTableSchemaHistory.lock(JdbcTableSchemaHistory.java:155)
        at org.flywaydb.core.internal.command.DbMigrate.migrateAll(DbMigrate.java:161)
        at org.flywaydb.core.internal.command.DbMigrate.migrate(DbMigrate.java:139)
        at org.flywaydb.core.Flyway$1.execute(Flyway.java:1395)
        at org.flywaydb.core.Flyway$1.execute(Flyway.java:1356)
        at org.flywaydb.core.Flyway.execute(Flyway.java:1711)
        at org.flywaydb.core.Flyway.migrate(Flyway.java:1356)
        at org.flywaydb.maven.MigrateMojo.doExecute(MigrateMojo.java:35)
        at org.flywaydb.maven.AbstractFlywayMojo.execute(AbstractFlywayMojo.java:746)
        at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:132)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
        at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)
        at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)
        at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
        at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:120)
        at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:355)
        at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:155)
        at org.apache.maven.cli.MavenCli.execute(MavenCli.java:584)
        at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:216)
        at org.apache.maven.cli.MavenCli.main(MavenCli.java:160)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
        at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
        at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
        at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
[ERROR] Unable to restore autocommit to original value for connection
java.sql.SQLRecoverableException: Closed Connection
        at oracle.jdbc.driver.PhysicalConnection.setAutoCommit(PhysicalConnection.java:2232)
        at org.flywaydb.core.internal.jdbc.TransactionTemplate.execute(TransactionTemplate.java:105)
        at org.flywaydb.core.internal.command.DbMigrate.applyMigrations(DbMigrate.java:281)
        at org.flywaydb.core.internal.command.DbMigrate.migrateGroup(DbMigrate.java:246)
        at org.flywaydb.core.internal.command.DbMigrate.access$100(DbMigrate.java:54)
        at org.flywaydb.core.internal.command.DbMigrate$2.call(DbMigrate.java:164)
        at org.flywaydb.core.internal.command.DbMigrate$2.call(DbMigrate.java:161)
        at org.flywaydb.core.internal.database.base.Connection$1.call(Connection.java:147)
        at org.flywaydb.core.internal.jdbc.TransactionTemplate.execute(TransactionTemplate.java:74)
        at org.flywaydb.core.internal.database.base.Connection.lock(Connection.java:143)
        at org.flywaydb.core.internal.schemahistory.JdbcTableSchemaHistory.lock(JdbcTableSchemaHistory.java:155)
        at org.flywaydb.core.internal.command.DbMigrate.migrateAll(DbMigrate.java:161)
        at org.flywaydb.core.internal.command.DbMigrate.migrate(DbMigrate.java:139)
        at org.flywaydb.core.Flyway$1.execute(Flyway.java:1395)
        at org.flywaydb.core.Flyway$1.execute(Flyway.java:1356)
        at org.flywaydb.core.Flyway.execute(Flyway.java:1711)
        at org.flywaydb.core.Flyway.migrate(Flyway.java:1356)
        at org.flywaydb.maven.MigrateMojo.doExecute(MigrateMojo.java:35)
        at org.flywaydb.maven.AbstractFlywayMojo.execute(AbstractFlywayMojo.java:746)
        at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:132)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
        at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)
        at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)
        at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
        at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:120)
        at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:355)
        at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:155)
        at org.apache.maven.cli.MavenCli.execute(MavenCli.java:584)
        at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:216)
        at org.apache.maven.cli.MavenCli.main(MavenCli.java:160)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
        at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
        at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
        at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
[ERROR] Migration of schema "SCHEMA1" to version 004 - Test failed! Please restore backups and roll back database and code!
[ERROR] Unable to rollback transaction
java.sql.SQLRecoverableException: Closed Connection
        at oracle.jdbc.driver.PhysicalConnection.getAutoCommit(PhysicalConnection.java:2254)
        at oracle.jdbc.driver.PhysicalConnection.rollback(PhysicalConnection.java:2424)
        at org.flywaydb.core.internal.jdbc.TransactionTemplate.execute(TransactionTemplate.java:90)
        at org.flywaydb.core.internal.database.base.Connection.restoreOriginalSchema(Connection.java:165)
        at org.flywaydb.core.internal.database.base.Connection.close(Connection.java:159)
        at org.flywaydb.core.internal.database.base.Database.close(Database.java:485)
        at org.flywaydb.core.Flyway.execute(Flyway.java:1731)
        at org.flywaydb.core.Flyway.migrate(Flyway.java:1356)
        at org.flywaydb.maven.MigrateMojo.doExecute(MigrateMojo.java:35)
        at org.flywaydb.maven.AbstractFlywayMojo.execute(AbstractFlywayMojo.java:746)
        at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:132)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
        at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)
        at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)
        at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
        at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:120)
        at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:355)
        at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:155)
        at org.apache.maven.cli.MavenCli.execute(MavenCli.java:584)
        at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:216)
        at org.apache.maven.cli.MavenCli.main(MavenCli.java:160)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
        at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
        at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
        at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
[ERROR] Unable to restore autocommit to original value for connection
java.sql.SQLRecoverableException: Closed Connection
        at oracle.jdbc.driver.PhysicalConnection.setAutoCommit(PhysicalConnection.java:2232)
        at org.flywaydb.core.internal.jdbc.TransactionTemplate.execute(TransactionTemplate.java:105)
        at org.flywaydb.core.internal.database.base.Connection.restoreOriginalSchema(Connection.java:165)
        at org.flywaydb.core.internal.database.base.Connection.close(Connection.java:159)
        at org.flywaydb.core.internal.database.base.Database.close(Database.java:485)
        at org.flywaydb.core.Flyway.execute(Flyway.java:1731)
        at org.flywaydb.core.Flyway.migrate(Flyway.java:1356)
        at org.flywaydb.maven.MigrateMojo.doExecute(MigrateMojo.java:35)
        at org.flywaydb.maven.AbstractFlywayMojo.execute(AbstractFlywayMojo.java:746)
        at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:132)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
        at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)
        at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)
        at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
        at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:120)
        at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:355)
        at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:155)
        at org.apache.maven.cli.MavenCli.execute(MavenCli.java:584)
        at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:216)
        at org.apache.maven.cli.MavenCli.main(MavenCli.java:160)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
        at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
        at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
        at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 4.516 s
[INFO] Finished at: 2019-02-26T07:43:54-07:00
[INFO] Final Memory: 14M/345M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.flywaydb:flyway-maven-plugin:5.2.4:migrate (default-cli) on project database: org.flywaydb.core.internal.exception.FlywaySqlException:
[ERROR] Unable to commit transaction
[ERROR] ----------------------------
[ERROR] SQL State  : 08003
[ERROR] Error Code : 17008
[ERROR] Message    : Closed Connection
[ERROR] -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException

1 个答案:

答案 0 :(得分:0)

请在Flyway问题跟踪器中提交问题,其中包含这些详细信息以及可能的复制步骤。