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

ORACLE 11g的Dropwizard迁移

方博学
2023-03-14

我正在开发迁移应用程序 [删除向导 0.7.0]。要使用迁移生成数据库结构.xml,我正在为 Postgres 和 ORACLE 数据库运行数据库迁移命令。对于 Postgres,我成功地生成了数据库结构,但是当尝试 ORACLE 时,以下详细信息导致异常

database:
  # the name of your JDBC driver
  # driverClass: org.postgresql.Driver
  driverClass: oracle.jdbc.driver.OracleDriver

  # the username
  user: system
  # user: postgres

  # the password
  password: Passw0rd

  # the JDBC URL
  # url: "jdbc:postgresql://192.168.1.130:5432/mydb"
  url: "jdbc:oracle:thin:@192.168.1.130:1521/mydb"

  # Hibernate dialect
  # dialect: "org.hibernate.dialect.PostgreSQLDialect"
  dialect: "org.hibernate.dialect.Oracle10gDialect"

  # hibernate.connection.provider_class
  connectionProviderClass: org.hibernate.service.jdbc.connections.internal.C3P0ConnectionProvider

对于这些预言机设置,我得到以下异常

    ERROR [2016-03-07 07:59:24,001] org.apache.tomcat.jdbc.pool.ConnectionPool: Unable to create initial connections of pool.
Exception in thread "main" java.lang.reflect.InvocationTargetException
! java.sql.SQLException: Validation Query Failed, enable logValidationErrors for more details.
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
! at org.apache.tomcat.jdbc.pool.ConnectionPool.createConnection(ConnectionPool.java:715) [tomcat-jdbc-7.0.50.jar:na]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
! at org.apache.tomcat.jdbc.pool.ConnectionPool.borrowConnection(ConnectionPool.java:635) [tomcat-jdbc-7.0.50.jar:na]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
! at org.apache.tomcat.jdbc.pool.ConnectionPool.init(ConnectionPool.java:486) [tomcat-jdbc-7.0.50.jar:na]
    at java.lang.reflect.Method.invoke(Method.java:606)
! at org.apache.tomcat.jdbc.pool.ConnectionPool.<init>(ConnectionPool.java:144) [tomcat-jdbc-7.0.50.jar:na]
    at com.intellij.rt.execution.CommandLineWrapper.main(CommandLineWrapper.java:121)
! at org.apache.tomcat.jdbc.pool.DataSourceProxy.pCreatePool(DataSourceProxy.java:116) [tomcat-jdbc-7.0.50.jar:na]
Caused by: java.sql.SQLException: Validation Query Failed, enable logValidationErrors for more details.
! at org.apache.tomcat.jdbc.pool.DataSourceProxy.createPool(DataSourceProxy.java:103) [tomcat-jdbc-7.0.50.jar:na]
    at org.apache.tomcat.jdbc.pool.ConnectionPool.createConnection(ConnectionPool.java:715)
! at org.apache.tomcat.jdbc.pool.DataSourceProxy.getConnection(DataSourceProxy.java:127) [tomcat-jdbc-7.0.50.jar:na]
    at org.apache.tomcat.jdbc.pool.ConnectionPool.borrowConnection(ConnectionPool.java:635)
! at io.dropwizard.migrations.CloseableLiquibase.<init>(CloseableLiquibase.java:17) [dropwizard-migrations-0.7.0.jar:0.7.0]
    at org.apache.tomcat.jdbc.pool.ConnectionPool.init(ConnectionPool.java:486)
! at io.dropwizard.migrations.AbstractLiquibaseCommand.openLiquibase(AbstractLiquibaseCommand.java:66) [dropwizard-migrations-0.7.0.jar:0.7.0]
    at org.apache.tomcat.jdbc.pool.ConnectionPool.<init>(ConnectionPool.java:144)
! at io.dropwizard.migrations.AbstractLiquibaseCommand.run(AbstractLiquibaseCommand.java:53) [dropwizard-migrations-0.7.0.jar:0.7.0]
    at org.apache.tomcat.jdbc.pool.DataSourceProxy.pCreatePool(DataSourceProxy.java:116)
! at io.dropwizard.cli.ConfiguredCommand.run(ConfiguredCommand.java:76) [dropwizard-core-0.7.0.jar:0.7.0]
    at org.apache.tomcat.jdbc.pool.DataSourceProxy.createPool(DataSourceProxy.java:103)
! at io.dropwizard.cli.Cli.run(Cli.java:70) [dropwizard-core-0.7.0.jar:0.7.0]
    at org.apache.tomcat.jdbc.pool.DataSourceProxy.getConnection(DataSourceProxy.java:127)
! at io.dropwizard.Application.run(Application.java:72) [dropwizard-core-0.7.0.jar:0.7.0]
    at io.dropwizard.migrations.CloseableLiquibase.<init>(CloseableLiquibase.java:17)
! at org.opensample.MyApplication.main(MyApplication.java:59) [classes/:na]
    at io.dropwizard.migrations.AbstractLiquibaseCommand.openLiquibase(AbstractLiquibaseCommand.java:66)
! at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.7.0_45]
    at io.dropwizard.migrations.AbstractLiquibaseCommand.run(AbstractLiquibaseCommand.java:53)
! at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[na:1.7.0_45]
    at io.dropwizard.cli.ConfiguredCommand.run(ConfiguredCommand.java:76)
! at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.7.0_45]
    at io.dropwizard.cli.Cli.run(Cli.java:70)
! at java.lang.reflect.Method.invoke(Method.java:606) ~[na:1.7.0_45]
    at io.dropwizard.Application.run(Application.java:72)
! at com.intellij.rt.execution.CommandLineWrapper.main(CommandLineWrapper.java:121) [idea_rt.jar:na]
    at org.opensample.Mypplication.main(MyApplication.java:59)
    ... 5 more

共有1个答案

于意智
2023-03-14

原因是DropWizard使用的默认validationQuery定义为

SELECT 1;

DB2不支持这种方法。一种可能的解决方案是在DropWizard配置中设置validationQuery参数。DB2的建议配置值为:

验证查询:从sysibm.sysdummy1中选择1

你可以在这里找到其他DB引擎不同定义的详细答案。

 类似资料:
  • 我试图将dlotwizard从1.2迁移到与DI相关的2.0.24(和2.0.25)时遇到了一些问题,想知道是否有人有同样的问题或任何想法。 我们有一个应用程序, DropWizardBundle类将实例绑定到类: SessionResource看起来像 Dropwizard 1.2中的当前代码正在运行,Responder被注入。切换到2.0.24/25响应器为空。我想知道我是否在迁移中错过了什么

  • 我已经向migrations.xml添加了新的变更集,但是当我运行时,它不会应用新的变更集,只是输出如下: 我有两个变更集,只应用了第一个变更集。例如: 另外,我只看到数据库更改日志表下的第一个更改集条目,这很奇怪。 如何使其应用我的新变更集?

  • 我在本地数据库上运行了一个迁移,进行得很顺利。我正在为同一模式的另一个数据库使用另一个。yml文件,但失败并出现错误

  • 在尝试从oracle11g数据库获取分页对象列表时,我面临一个很大的性能问题。 据我所知,以及我在网上查过的情况,在oracle11g中实现分页的唯一方法如下:示例:[页面=1,大小=100] 此查询中的问题是,从表“table\u NAME”中获取数据的最内部查询返回了大量数据,导致整个查询需要8秒钟(应用where子句后返回了大约200万条记录,其中包含9或10个join子句)。 这是因为最内

  • Dropwizard 是一个 Java 框架,用于开发易于运维,高性能的 RESTful 网络服务。 它由Yammer开发,用于增强基于JVM的后端服务,集合了来自Java生态系统中的稳定和成熟的程序库,组成了简单,轻量级的程序包,使得用户可以专注于把事情做好。 Dropwizard已是开箱即用的,它支持复杂的配置,应用环境, 日志和运维工具,使得你和你的团队可能在最短的时间内交付一个一流品质 HTTP+JSON 网络服务。

  • 就我而言,我需要运行一些计划任务(例如每分钟),在数据库中进行一些检查,如果需要,还需要一些子任务。这应该不是数据库健康检查! DW 文档说: "需要注意的是,环境为管理的ExecutorService和schduledExecutorService实例提供了内置的工厂方法。有关详细信息,请参阅生命周期环境#执行周期服务和生命周期环境#计划执行周期服务。" 有谁知道如何在DW中实现这一点?试图尝试