升级数据库后应用程序无法在 Heroku 上运行
App not working on Heroku after upgrading database
我最近刚刚将 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()
您的连接设置不包括设置端口,很可能在您的 s0 计划中,它不是 5432。
从 DATABASE_URL 中解析出端口并将其传递给 jdbc 然而这样就完成了。
意志是正确的。它应该是这样的:
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)
}
我最近刚刚将 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()
您的连接设置不包括设置端口,很可能在您的 s0 计划中,它不是 5432。
从 DATABASE_URL 中解析出端口并将其传递给 jdbc 然而这样就完成了。
意志是正确的。它应该是这样的:
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)
}