如何使Play 2 Scala与远程PostgreSQL db server配合使用?

如何使Play 2 Scala与远程PostgreSQL db server配合使用?,postgresql,scala,playframework,playframework-2.0,sbt,Postgresql,Scala,Playframework,Playframework 2.0,Sbt,我的Play应用程序可以连接到MySQL服务器 为什么它不能连接到PostgreSQL服务器 在项目目录中 // build.sbt file... name := "scalaplay1" version := "1.0" lazy val `scalaplay1` = (project in file(".")).enablePlugins(PlayScala) scalaVersion := "2.11.7" libraryDependencies ++= Seq( jdbc ,

我的Play应用程序可以连接到MySQL服务器

为什么它不能连接到PostgreSQL服务器

在项目目录中

// build.sbt file...

name := "scalaplay1"

version := "1.0"

lazy val `scalaplay1` = (project in file(".")).enablePlugins(PlayScala)

scalaVersion := "2.11.7"

libraryDependencies ++= Seq( jdbc , cache , ws   , specs2 % Test,
  "mysql" % "mysql-connector-java" % "5.1.38"      // This works
  // "postgresql" % "postgresql" % "9.1-901.jdbc4" // This does not
  )

unmanagedResourceDirectories in Test <+=  baseDirectory ( _ /"target/web/public/test" )  

resolvers += "scalaz-bintray" at "https://dl.bintray.com/scalaz/releases"  

或者升级到最新的驱动程序(不知道如何在SBT中实现)

如果您阅读stacktrace的底部(以及播放),您应该尝试添加connectionTestQuery,例如

db.default.connectionTestQuery = "select 1"

泰纳克人。我在application.conf db.default.hikaricp.connectionTestQuery=“SELECT TRUE”上添加了这些命令,效果很好。

你的应用程序和数据库在同一个安全组中吗?它起作用了。另外,我是一个初学者,我所知道的只是如何从谷歌复制粘贴配置的东西,我似乎找不到build.sbt的最新PostgreSQL驱动程序。我不想手动从Google上抓取jar文件。@MichaelLafayette您可以在此处选择更新的驱动程序版本:。此外,这是HikariCP的一个“bug”,已经修复:。SBT找不到以“-jdbc4”结尾的bug。就像我可以用“9.2-1003-jdbc4”替换“9.1-901.jdbc4”一样,我会得到未解析的依赖项。我想我会坚持使用旧的驱动程序,以确保两个数据库都能正常工作。SBT需要更像Rails gems,您可以指定一系列愿意接受的版本,它会自动选择该范围内最高的版本。此外,尽管我在抱怨,他们应该更好地格式化这些堆栈跟踪。它们看起来像一堵文字墙。在痕迹之间留一行空白就好了。而且,颜色真的很难看。这些列具有如此多的颜色对比,以至于文本墙看起来像一系列黑色、蓝色和红色条纹。非常感谢。
Configuration error

Cannot connect to database [default]

In /C:/Users/User/IdeaProjects/project/target/scala-2.11/classes/application.conf:48

47. db.default.driver=org.postgresql.Driver // This fails (line 48)
48. db.default.url="jdbc:postgresql://<my_server>:<port_number>/<db_name>"
--- (Running the application, auto-reloading is enabled) ---

[info] p.c.s.NettyServer - Listening for HTTP on /0:0:0:0:0:0:0:0:9000

Server started, use Alt+D to stop

[success] Compiled in 567ms
[warn] application - Logger configuration in conf files is deprecated and has no effect. Use a logback configuration file instead.
[info] application - Creating Pool for datasource 'default'
[error] application - 

! @6oombhen4 - Internal server error, for (GET) [/] ->

play.api.Configuration$$anon$1: Configuration error[Cannot connect to database [default]]
    at play.api.Configuration$.configError(Configuration.scala:178) ~[play_2.11-2.4.6.jar:2.4.6]
    at play.api.Configuration.reportError(Configuration.scala:829) ~[play_2.11-2.4.6.jar:2.4.6]
    at play.api.db.DefaultDBApi$$anonfun$connect$1.apply(DefaultDBApi.scala:48) ~[play-jdbc_2.11-2.4.6.jar:2.4.6]
    at play.api.db.DefaultDBApi$$anonfun$connect$1.apply(DefaultDBApi.scala:42) ~[play-jdbc_2.11-2.4.6.jar:2.4.6]
    at scala.collection.immutable.List.foreach(List.scala:381) ~[scala-library-2.11.7.jar:na]
    at play.api.db.DefaultDBApi.connect(DefaultDBApi.scala:42) ~[play-jdbc_2.11-2.4.6.jar:2.4.6]
    at play.api.db.DBApiProvider.get$lzycompute(DBModule.scala:72) ~[play-jdbc_2.11-2.4.6.jar:2.4.6]
    at play.api.db.DBApiProvider.get(DBModule.scala:62) ~[play-jdbc_2.11-2.4.6.jar:2.4.6]
    at play.api.db.DBApiProvider.get(DBModule.scala:58) ~[play-jdbc_2.11-2.4.6.jar:2.4.6]
    at com.google.inject.internal.ProviderInternalFactory.provision(ProviderInternalFactory.java:81) ~[guice-4.0.jar:na]
Caused by: play.api.Configuration$$anon$1: Configuration error[Exception during pool initialization]
    at play.api.Configuration$.configError(Configuration.scala:178) ~[play_2.11-2.4.6.jar:2.4.6]
    at play.api.PlayConfig.reportError(Configuration.scala:1048) ~[play_2.11-2.4.6.jar:2.4.6]
    at play.api.db.HikariCPConnectionPool.create(HikariCPModule.scala:69) ~[play-jdbc_2.11-2.4.6.jar:2.4.6]
    at play.api.db.PooledDatabase.createDataSource(Databases.scala:199) ~[play-jdbc_2.11-2.4.6.jar:2.4.6]
    at play.api.db.DefaultDatabase.dataSource$lzycompute(Databases.scala:124) ~[play-jdbc_2.11-2.4.6.jar:2.4.6]
    at play.api.db.DefaultDatabase.dataSource(Databases.scala:122) ~[play-jdbc_2.11-2.4.6.jar:2.4.6]
    at play.api.db.DefaultDatabase.getConnection(Databases.scala:143) ~[play-jdbc_2.11-2.4.6.jar:2.4.6]
    at play.api.db.DefaultDatabase.getConnection(Databases.scala:139) ~[play-jdbc_2.11-2.4.6.jar:2.4.6]
    at play.api.db.DefaultDBApi$$anonfun$connect$1.apply(DefaultDBApi.scala:44) ~[play-jdbc_2.11-2.4.6.jar:2.4.6]
    at play.api.db.DefaultDBApi$$anonfun$connect$1.apply(DefaultDBApi.scala:42) ~[play-jdbc_2.11-2.4.6.jar:2.4.6]
Caused by: com.zaxxer.hikari.pool.PoolInitializationException: Exception during pool initialization
    at com.zaxxer.hikari.pool.BaseHikariPool.initializeConnections(BaseHikariPool.java:542) ~[HikariCP-2.3.7.jar:na]
    at com.zaxxer.hikari.pool.BaseHikariPool.<init>(BaseHikariPool.java:171) ~[HikariCP-2.3.7.jar:na]
    at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:60) ~[HikariCP-2.3.7.jar:na]
    at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:48) ~[HikariCP-2.3.7.jar:na]
    at com.zaxxer.hikari.HikariDataSource.<init>(HikariDataSource.java:80) ~[HikariCP-2.3.7.jar:na]
    at play.api.db.HikariCPConnectionPool$$anonfun$1.apply(HikariCPModule.scala:58) ~[play-jdbc_2.11-2.4.6.jar:2.4.6]
    at play.api.db.HikariCPConnectionPool$$anonfun$1.apply(HikariCPModule.scala:54) ~[play-jdbc_2.11-2.4.6.jar:2.4.6]
    at scala.util.Try$.apply(Try.scala:192) ~[scala-library-2.11.7.jar:na]
    at play.api.db.HikariCPConnectionPool.create(HikariCPModule.scala:54) ~[play-jdbc_2.11-2.4.6.jar:2.4.6]
    at play.api.db.PooledDatabase.createDataSource(Databases.scala:199) ~[play-jdbc_2.11-2.4.6.jar:2.4.6]
Caused by: java.sql.SQLException: JDBC4 Connection.isValid() method not supported, connection test query must be configured
    at com.zaxxer.hikari.pool.BaseHikariPool.addConnection(BaseHikariPool.java:441) ~[HikariCP-2.3.7.jar:na]
    at com.zaxxer.hikari.pool.BaseHikariPool.initializeConnections(BaseHikariPool.java:540) ~[HikariCP-2.3.7.jar:na]
    at com.zaxxer.hikari.pool.BaseHikariPool.<init>(BaseHikariPool.java:171) ~[HikariCP-2.3.7.jar:na]
    at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:60) ~[HikariCP-2.3.7.jar:na]
    at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:48) ~[HikariCP-2.3.7.jar:na]
    at com.zaxxer.hikari.HikariDataSource.<init>(HikariDataSource.java:80) ~[HikariCP-2.3.7.jar:na]
    at play.api.db.HikariCPConnectionPool$$anonfun$1.apply(HikariCPModule.scala:58) ~[play-jdbc_2.11-2.4.6.jar:2.4.6]
    at play.api.db.HikariCPConnectionPool$$anonfun$1.apply(HikariCPModule.scala:54) ~[play-jdbc_2.11-2.4.6.jar:2.4.6]
    at scala.util.Try$.apply(Try.scala:192) ~[scala-library-2.11.7.jar:na]
    at play.api.db.HikariCPConnectionPool.create(HikariCPModule.scala:54) ~[play-jdbc_2.11-2.4.6.jar:2.4.6]
#specify a connectionTestQuery. Only do this if upgrading the JDBC-Driver does not help
db.default.hikaricp.connectionTestQuery="SELECT TRUE"
db.default.connectionTestQuery = "select 1"