【问题标题】:App not working on Heroku after upgrading database升级数据库后应用程序无法在 Heroku 上运行
【发布时间】:2015-04-12 10:42:52
【问题描述】:

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

【问题讨论】:

  • 您是否缺少端口? println 中的“dbUrl”是什么样的?

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


【解决方案1】:

您的连接设置不包括设置端口,而且很可能在您的 s0 计划中,它不是 5432。

从 DATABASE_URL 中解析出端口并将其传递给 jdbc,但这样就完成了。

【讨论】:

    【解决方案2】:

    威尔是正确的。它应该是这样的:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-13
      • 2016-06-02
      • 1970-01-01
      • 2023-03-19
      • 1970-01-01
      • 2023-02-07
      • 2021-11-23
      • 2017-02-24
      相关资源
      最近更新 更多