【问题标题】:How to connect to heroku postgress database from JDBC?如何从 JDBC 连接到 heroku postgres 数据库?
【发布时间】:2017-10-07 04:10:03
【问题描述】:

我使用此代码 但是任何人都可以建议我或指导我找到一个正确的文档,它可以给我一个如何使用 JDBC 连接到 heroku postgress 数据库的示例?

    URI dbUri = new URI(System.getenv("DATABASE_URL"));
    String dbUrl = "jdbc:postgresql://" + dbUri.getHost() + 
    dbUri.getPath();
    connectionPool = new BasicDataSource();

    if (dbUri.getUserInfo() != null) {
        connectionPool.setUsername(dbUri.getUserInfo().split(":")[0]);
        connectionPool.setPassword(dbUri.getUserInfo().split(":")[1]);
    }
    connectionPool.setDriverClassName("org.postgresql.Driver");
    connectionPool.setUrl(dbUrl);
    connectionPool.setInitialSize(1);

    Connection connection = connectionPool.getConnection();

【问题讨论】:

标签: postgresql heroku database-connection


【解决方案1】:

查看heroku的documentation

注意:

Heroku Postgres 插件的DATABASE_URL 遵循以下约定

postgres://<username>:<password>@<host>:<port>/<dbname>

但是 Postgres JDBC 驱动程序使用以下约定:

jdbc:postgresql://<host>:<port>/<dbname>?user=<username>&password=<password>

将 DATABASE_URL 解析为 Jdbc 格式的示例代码:

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

【讨论】:

  • 所以,我看到了,我相信问题出在我的 DATABASE_URL 环境中,因为当我试图获取它的值时,它没有附加用户名/密码。可能是因为我没有在任何地方设置 DATABSE_URL 的值?我收到此错误:检查主机名和端口是否正确,以及邮件管理员是否接受 TCP/IP 连接。
  • 确保你的 heroku 配置中有一个 DATABASE_URL - heroku config | grep DATABASE_URL 如果没有,然后提升 DB heroku pg:promote HEROKU_POSTGRESQL_XXX 其中 XXX 是 DB 的颜色。
猜你喜欢
  • 2016-01-27
  • 2013-02-05
  • 2021-06-21
  • 2016-08-12
  • 2014-05-28
  • 2021-02-06
  • 1970-01-01
  • 1970-01-01
  • 2017-01-12
相关资源
最近更新 更多