【问题标题】:DATABASE_URL not found even when it is set in HerokuDATABASE_URL 即使在 Heroku 中设置也找不到
【发布时间】:2019-04-20 00:49:07
【问题描述】:

大家好,我有一个带有 PostgreSQL 数据库的 heroku Web 应用程序。如图所示,DATABASE_URL 已设置:

但由于某种原因,当我尝试访问环境变量以连接到数据库时,我得到一个 NullPointerException,因为显然 DATABASE_URL 不存在:

private static Connection getConnection() throws URISyntaxException, SQLException {
  URI dbUri = new URI(System.getenv("DATABASE_URL"));

  String username = dbUri.getUserInfo().split(":")[0];
  String password = dbUri.getUserInfo().split(":")[1];
  String dbUrl = "jdbc:postgresql://" + dbUri.getHost() + ':' + dbUri.getPort() + dbUri.getPath();

  return DriverManager.getConnection(dbUrl, username, password);
}

这里发生了什么?我该如何解决?

【问题讨论】:

  • 确切的错误和回溯是什么?我们需要知道具体是什么在生成 NPE。
  • 另外,您泄露了 Postgres 连接字符串的很大一部分(您的整个用户名和一大段密码)。在您做任何其他事情之前,请rotate your credentials。您屏幕截图中的内容将永远受到影响。
  • @Chris 这只是一个测试数据库,我想将其用于以后的目的。错误发生在第一行代码 System.getenv cant find my database_url environment
  • 好的,现在你已经泄露了两个完整的连接字符串。即使他们是测试数据库,立即轮换他们的凭据。
  • 不要描述错误,显示给我们。如果namenulljava.lang.System.getenv(name) 应该只抛出NullPointerException。如果未设置该值,则此调用应返回 null。如果发生了这种情况,那么当您在其上调用 .getUserInfo() 时,或者当您从中实例化 URI 时,您的错误就会发生。但我们不必猜测……请告诉我们确切的错误。见How to Ask

标签: postgresql heroku nullpointerexception environment-variables database-connection


【解决方案1】:

Heroku 配置变量是 environment variables。它们在特定环境中定义并应用于特定环境,在本例中是应用在 Heroku 上运行的环境。它们对其他环境没有影响,例如在您面前的机器上。

您可以在本地configure NetBeans to use an environment variable for your project。这里DATABASE_URL 的值可能与 Heroku 上的不同,只要确保将其设置为有效的 PostgreSQL URL 值即可。

【讨论】:

  • 这是否意味着我无法在已部署的 Heroku Web 应用程序中访问我的 database_url?因为现在我在heroku上部署了我的应用程序,我使用了一个测试环境变量在网页上显示它,但它没有显示
  • @SavanLuffy,小心大小写。名为DATABASE_URLdatabase_url 的环境变量是不同的。您通过heroku config 看到的变量应该在您使用-a / --app 选项提供的应用程序中可用。
【解决方案2】:

对于 Windows

write set DATABASE_URL=url address from Heroku

对于 macOS

export DATABASE_URL=url address from Heroku

确保您已经安装了 PostgreSQL。

【讨论】:

    猜你喜欢
    • 2011-12-06
    • 1970-01-01
    • 2013-11-02
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 2019-01-17
    • 2019-04-26
    • 2017-06-04
    相关资源
    最近更新 更多