试图将postgresql heroku与play连接起来

时间:2016-11-07 20:54:38

标签: postgresql heroku jdbc playframework

我正在尝试使用带有播放框架(版本2.5.9)的heroku postgresql,但它不起作用...

build.sbt

libraryDependencies ++= Seq(
javaJdbc,
cache,
javaWs,
javaJpa,
"org.webjars" % "bootstrap" % "2.3.1",
"org.hibernate" % "hibernate-entitymanager" % "5.2.3.Final",
"postgresql" % "postgresql" % "9.1-901-1.jdbc4"
)

CONF / application.conf

ebean.default = ["models.*"]
db.default.driver=org.postgresql.Driver
db.default.url="postgres://ambpfzhcrpupmx:PeSnt07zQFVWKQrsqcRd1GzW6I@ec2-54-227-245-197.compute-1.amazonaws.com:5432/d4i5fck68498ce"
default.username = hereMyUserNameFromHeroku
default.password = "hereMyPassNameFromHeroku"

我获得:  Caused by: org.postgresql.util.PSQLException: FATAL: no pg_hba.conf entry for host "78.192.102.83", user "ambpfzhcrpupmx", database "d4i5fck68498ce", SSL off

我不明白为什么......

我正在尝试在我的网址末尾添加“?ssl = true”,但它也不起作用...我获得: Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

任何人都可以帮助我PLZ?谢谢:))

1 个答案:

答案 0 :(得分:0)

首先,重置您的Postgres用户名和密码,因为您已公开发布它们,任何人都可以立即访问您的数据库。运行此命令:

$ heroku pg:credentials DATABASE --reset

然后根据Play Framework documentation更改您的conf/application.conf以使用JDBC_DATABASE_URL环境变量。

db.default.url=${?JDBC_DATABASE_URL}
db.default.username=${?JDBC_DATABASE_USERNAME}
db.default.password=${?JDBC_DATABASE_PASSWORD}

根本问题是您的数据库URL未启用SSL,并且您的Postgres JDBC依赖关系太旧而无法自动启用它。我建议更新到:

"org.postgresql" % "postgresql" % "9.4.1211"