我刚刚将Heroku上的数据库从Hobby dev
计划升级到Standard 0
计划。关于插入数据,我的应用程序在Hobby Dev计划上运行得很好。我将DATABASE_URL
更改为新DATABASE_URL
。我收到了正确的凭据,我已通过打印出来验证了这些凭据。但是,新行未插入数据库中。以前有没有经历过这样的事情?
如果我能提供任何其他数据来帮助您,请告诉我
修改更多数据:
override def database: DatabaseDef = {
println("CREATING DATABASE FROM URL")
val dbUri = new URI(System.getenv("DATABASE_URL"))
val username = dbUri.getUserInfo.split(":")(0)
println("Username: " + username)
val password = dbUri.getUserInfo.split(":")(1)
println("password " + password)
val dbUrl = "jdbc:postgresql://" + dbUri.getHost + dbUri.getPath
println("url " + dbUrl)
JdbcBackend.Database.forURL(dbUrl, username, password, null, "org.postgresql.Driver")
}
}
这是我尝试用来连接到我的数据源的方法,当我在Hobby Dev
postgres计划中时,该方法有效。我能看到的唯一区别是Hobby Dev
是postgres 9.3.5
而Standard 0
计划是9.3.6
编辑2:
我正在使用play-slick依赖项和postgres依赖项:
"com.typesafe.play" %% "play-slick" % "0.8.1",
"org.postgresql" % "postgresql" % "9.4-1200-jdbc41" withSources() withJavadoc()
答案 0 :(得分:3)
您的连接设置不包括设置端口,很可能在您的s0计划中,它不是5432.
从DATABASE_URL中解析出端口并将其传递给jdbc然后就完成了。
答案 1 :(得分:0)
意志是对的。这应该是它的样子:
def getConnection(): Connection = {
val dbUri = new URI(System.getenv("DATABASE_URL"))
val username = dbUri.getUserInfo.split(":")(0)
val password = dbUri.getUserInfo.split(":")(1)
val dbUrl = s"jdbc:postgresql://${dbUri.getHost}:${dbUri.getPort}${dbUri.getPath}"
DriverManager.getConnection(dbUrl, username, password)
}