1

I am working on DROPWIZARD MIGRATION application [Dropwizard 0.7.0]. To generate db structure using migration.xml, I am running db migrate command for Postgres and ORACLE database. For Postgres I am successfully able to generate db structure but when try for ORACLE with following details getting exception

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

for these oracle setting I am getting following exception

    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
Tej Kiran
  • 2,218
  • 5
  • 21
  • 42
  • 1
    "*Validation Query Failed, enable logValidationErrors for more details"* - so what is your validation query and what did you see when you followed that advice? –  Mar 07 '16 at 08:09
  • My postgres configuration is working but same not working for Oracle. I have no idea about validation query. – Tej Kiran Mar 07 '16 at 09:03
  • In the code I did not mention validaiton query for postgres and I am surprised that It was working and same settings are not working for oracle. After adding the following statement i.e. dataSourceFactory.setValidationQuery("SELECT * FROM INFORMATION_SCHEMA.SYSTEM_TABLES"); I moved to next step. Now I am getting ORA-00972: identifier is too long – Tej Kiran Mar 07 '16 at 10:34
  • 1
    There is no `information_schema` in Oracle. You should change that to `select 1 from dual`. Plus: it is a pretty bad validation query for Postgres too. You should change it to `select 1` for Postgres. Why read the complete `system_tables` content each time you want to validate the connection? –  Mar 07 '16 at 10:36

1 Answers1

1

The reason is the default validationQuery used by DropWizard defined as

SELECT 1;

which is not supported by DB2. A possible solution is to set the validationQuery paramter in your DropWizard configuration. A recommended config value for DB2 is:

validationQuery: select 1 from sysibm.sysdummy1

You can find a detailed answer with different definitions for other DB engines here.

shadowhorst
  • 1,480
  • 13
  • 21