升级数据库后应用程序无法在 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.5Standard 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)
}