升级数据库后App不在Heroku上工作

时间:2015-02-11 21:30:56

标签: postgresql scala heroku playframework-2.0 playframework-2.3

我刚刚将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() 

2 个答案:

答案 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)
}