迁飞JDBC连接迁移麻烦


我有迁飞JDBC迁移麻烦:执行我试图关闭数据库连接conn.close();方法,而且所有报表后,我收到org.postgresql.util.PSQLException: This connection has been closed.例外。当我检查数据库时 - 我在迁移过程中所做的所有更改都已完成,但schema_version表未更新:未添加有关迁移的项目。
更多细节在这里:
在flyway.properties我添加了classpath:com/packageone/somepackege/database/migrationflyway.locations部分。然后,我创建了将执行迁移类:public class V1_1_1__SomeImportantMigration implements JdbcMigration并填写migrate方式类似:即在migrate方法做
迁飞JDBC连接迁移麻烦

@Override 

public void migrate(Connection conn) throws Exception {

beforeActions(conn);

veryImportantMigration(conn, getData(conn));

afterActions(conn);

conn.close();

}

事情被应用,但关闭连接导致异常。
由于上述信息,我有这样的问题:为什么这个连接在被我关闭之前关闭?并通过什么?

UPDATE(堆栈跟踪):

[ERROR] Unable to rollback transaction 

org.postgresql.util.PSQLException: This connection has been closed.

at org.postgresql.jdbc2.AbstractJdbc2Connection.checkClosed(AbstractJdbc2Connection.java:820)

at org.postgresql.jdbc2.AbstractJdbc2Connection.rollback(AbstractJdbc2Connection.java:837)

at org.flywaydb.core.internal.util.jdbc.TransactionTemplate.execute(TransactionTemplate.java:96)

at org.flywaydb.core.internal.command.DbMigrate.applyMigrations(DbMigrate.java:273)

at org.flywaydb.core.internal.command.DbMigrate.access$800(DbMigrate.java:53)

at org.flywaydb.core.internal.command.DbMigrate$2.call(DbMigrate.java:210)

at org.flywaydb.core.internal.command.DbMigrate$2.call(DbMigrate.java:146)

at org.flywaydb.core.internal.dbsupport.postgresql.PostgreSQLAdvisoryLockTemplate.execute(PostgreSQLAdvisoryLockTemplate.java:68)

at org.flywaydb.core.internal.dbsupport.postgresql.PostgreSQLDbSupport.lock(PostgreSQLDbSupport.java:162)

at org.flywaydb.core.internal.metadatatable.MetaDataTableImpl.lock(MetaDataTableImpl.java:174)

at org.flywaydb.core.internal.command.DbMigrate.migrate(DbMigrate.java:146)

at org.flywaydb.core.Flyway$1.execute(Flyway.java:1010)

at org.flywaydb.core.Flyway$1.execute(Flyway.java:971)

at org.flywaydb.core.Flyway.execute(Flyway.java:1464)

at org.flywaydb.core.Flyway.migrate(Flyway.java:971)

at org.flywaydb.maven.MigrateMojo.doExecute(MigrateMojo.java:30)

at org.flywaydb.maven.AbstractFlywayMojo.execute(AbstractFlywayMojo.java:600)

at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134)

at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:207)

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:128)

at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:307)

at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193)

at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:106)

at org.apache.maven.cli.MavenCli.execute(MavenCli.java:863)

at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:288)

at org.apache.maven.cli.MavenCli.main(MavenCli.java:199)

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

org.postgresql.util.PSQLException: This connection has been closed.

at org.postgresql.jdbc2.AbstractJdbc2Connection.checkClosed(AbstractJdbc2Connection.java:820)

at org.postgresql.jdbc2.AbstractJdbc2Connection.setAutoCommit(AbstractJdbc2Connection.java:762)

at org.flywaydb.core.internal.util.jdbc.TransactionTemplate.execute(TransactionTemplate.java:114)

at org.flywaydb.core.internal.command.DbMigrate.applyMigrations(DbMigrate.java:273)

at org.flywaydb.core.internal.command.DbMigrate.access$800(DbMigrate.java:53)

at org.flywaydb.core.internal.command.DbMigrate$2.call(DbMigrate.java:210)

at org.flywaydb.core.internal.command.DbMigrate$2.call(DbMigrate.java:146)

at org.flywaydb.core.internal.dbsupport.postgresql.PostgreSQLAdvisoryLockTemplate.execute(PostgreSQLAdvisoryLockTemplate.java:68)

at org.flywaydb.core.internal.dbsupport.postgresql.PostgreSQLDbSupport.lock(PostgreSQLDbSupport.java:162)

at org.flywaydb.core.internal.metadatatable.MetaDataTableImpl.lock(MetaDataTableImpl.java:174)

at org.flywaydb.core.internal.command.DbMigrate.migrate(DbMigrate.java:146)

at org.flywaydb.core.Flyway$1.execute(Flyway.java:1010)

at org.flywaydb.core.Flyway$1.execute(Flyway.java:971)

at org.flywaydb.core.Flyway.execute(Flyway.java:1464)

at org.flywaydb.core.Flyway.migrate(Flyway.java:971)

at org.flywaydb.maven.MigrateMojo.doExecute(MigrateMojo.java:30)

at org.flywaydb.maven.AbstractFlywayMojo.execute(AbstractFlywayMojo.java:600)

at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134)

at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:207)

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:128)

at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:307)

at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193)

at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:106)

at org.apache.maven.cli.MavenCli.execute(MavenCli.java:863)

at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:288)

at org.apache.maven.cli.MavenCli.main(MavenCli.java:199)

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 release Flyway advisory lock

org.postgresql.util.PSQLException: This connection has been closed.

at org.postgresql.jdbc2.AbstractJdbc2Connection.checkClosed(AbstractJdbc2Connection.java:820)

at org.postgresql.jdbc3.AbstractJdbc3Connection.prepareStatement(AbstractJdbc3Connection.java:275)

at org.postgresql.jdbc2.AbstractJdbc2Connection.prepareStatement(AbstractJdbc2Connection.java:293)

at org.flywaydb.core.internal.dbsupport.JdbcTemplate.prepareStatement(JdbcTemplate.java:319)

at org.flywaydb.core.internal.dbsupport.JdbcTemplate.execute(JdbcTemplate.java:247)

at org.flywaydb.core.internal.dbsupport.postgresql.PostgreSQLAdvisoryLockTemplate.execute(PostgreSQLAdvisoryLockTemplate.java:81)

at org.flywaydb.core.internal.dbsupport.postgresql.PostgreSQLDbSupport.lock(PostgreSQLDbSupport.java:162)

at org.flywaydb.core.internal.metadatatable.MetaDataTableImpl.lock(MetaDataTableImpl.java:174)

at org.flywaydb.core.internal.command.DbMigrate.migrate(DbMigrate.java:146)

at org.flywaydb.core.Flyway$1.execute(Flyway.java:1010)

at org.flywaydb.core.Flyway$1.execute(Flyway.java:971)

at org.flywaydb.core.Flyway.execute(Flyway.java:1464)

at org.flywaydb.core.Flyway.migrate(Flyway.java:971)

at org.flywaydb.maven.MigrateMojo.doExecute(MigrateMojo.java:30)

at org.flywaydb.maven.AbstractFlywayMojo.execute(AbstractFlywayMojo.java:600)

at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134)

at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:207)

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:128)

at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:307)

at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193)

at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:106)

at org.apache.maven.cli.MavenCli.execute(MavenCli.java:863)

at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:288)

at org.apache.maven.cli.MavenCli.main(MavenCli.java:199)

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)

回答:

你不应该调用由迁飞提供给您的连接上close()。 Flyway将其自身用于其他内务处理任务(包括更新版本表),并关闭它可防止飞路正常工作。

以上是 迁飞JDBC连接迁移麻烦 的全部内容, 来源链接: utcz.com/qa/262232.html

回到顶部