无法在 play 2.4 中连接到 Oracle 数据库

Cannot connect to Oracle db in play 2.4

很多天以来,我一直在尝试使用 Play 2.4 框架连接到 Oracle 数据库,但我所有的尝试都是徒劳的。因此,为此寻求一些解决方案。 我在 application.conf 中尝试了以下配置,但 none 有效:

db.default.driver=oracle.jdbc.driver.OracleDriver
db.default.username=user_name
db.default.password=password

1) db.default.url="jdbc:oracle:thin:@host_name:host_port:sid"
2) db.default.url="jdbc:oracle:thin://@host_name:host_port/sid"
3) db.default.url="jdbc:oracle:thin://host_name:host_port/sid"
4) db.default.url="jdbc:oracle:thin:@host_name:host_port:sid"
   db.default.host=host_name
5) db.default.url="jdbc:oracle:thin://@host_name:host_port/sid"
   db.default.host=host_name
6) db.default.url="jdbc:oracle:thin://host_name:host_port/sid"
   db.default.host=host_name

以下是我在每种情况下遇到的异常:

CreationException: Unable to create injector, see the following errors:

1) Error in custom provider, Configuration error: Configuration error[Cannot connect to database [default]]
      while locating play.api.db.DBApiProvider
      while locating play.api.db.DBApi
      for field at play.api.db.NamedDatabaseProvider.dbApi(DBModule.scala:80)
      while locating play.api.db.NamedDatabaseProvider
at com.google.inject.util.Providers$GuicifiedProviderWithDependencies.initialize(Providers.java:149)
at play.api.db.DBModule$$anonfun$namedDatabaseBindings.apply(DBModule.scala:34):
   Binding(interface play.api.db.Database qualified with
      QualifierInstance(@play.db.NamedDatabase(value=default)) to
      ProviderTarget(play.api.db.NamedDatabaseProvider@5968e9a8)) 
      (via modules: com.google.inject.util.Modules$OverrideModule -> play.api.inject.guice.GuiceableModuleConversions$$anon)
Caused by: Configuration error: Configuration error[Cannot connect to database [default]]
    at play.api.Configuration$.configError(Configuration.scala:178)
    at play.api.Configuration.reportError(Configuration.scala:829)
    at play.api.db.DefaultDBApi$$anonfun$connect.apply(DefaultDBApi.scala:48)
    at play.api.db.DefaultDBApi$$anonfun$connect.apply(DefaultDBApi.scala:42)
    at scala.collection.immutable.List.foreach(List.scala:318)
    at play.api.db.DefaultDBApi.connect(DefaultDBApi.scala:42)
    at play.api.db.DBApiProvider.get$lzycompute(DBModule.scala:72)
    at play.api.db.DBApiProvider.get(DBModule.scala:62)

感谢大家看我的问题,最后参考网上的帖子和play 2.4的文档,下面是对这个问题的回答:

  a) Url format for oracle will be as below:
     db.default.url="jdbc:oracle:thin:@host_name:host_port:sid"
  b) Add property as:
     db.default.hikaricp.connectionTestQuery="SELECT 1 FROM DUAL"
     # above query will be used to check connection, this is required.

谢谢, 普拉迪普夏尔马