为本地版本的Heroku应用程序配置数据库访问

时间:2018-03-15 00:55:39

标签: java postgresql heroku

我正在使用Java修改" Heroku入门"示例应用(documentation from Heroku / source on Github)并且我的本地数据库连接出现问题。

相关代码来自主要类:

public class Main {
    @Value("${spring.datasource.url}")
    private String dbUrl;

[...]

    @Bean
    public DataSource dataSource() throws SQLException {
        if (dbUrl == null || dbUrl.isEmpty()) {
            return new HikariDataSource();
        } else {
            HikariConfig config = new HikariConfig();
            config.setJdbcUrl(dbUrl);
            return new HikariDataSource(config);
        }
    }

dbUrl的值由application.properties文件提取,其中包含内容

spring.datasource.url: ${JDBC_DATABASE_URL:}
spring.datasource.hikari.connection-timeout=30000
spring.datasource.hikari.maximum-pool-size=10

[...]

因此,属性文件只引用另一个变量${JDBC_DATABASE_URL:}。根据{{​​3}},${JDBC_DATABASE_URL:}是在运行时生成的。在已部署的版本上,该应用程序会找出真实的"数据库网址很好,但是当我Heroku's documentation on database connections时,我收到了Hikari错误

  

dataSource或dataSourceClassName或jdbcUrl是必需的。

尝试访问数据库时,甚至只是从连接池获取连接。

我已经

  • 将最新版本的Postgres下载到我的本地计算机
  • 验证它是否按预期使用端口5432
  • 使用set DATABASE_URL=postgres://my_db_user:somePassword@localhost:5432/my_local_db_name
  • 在命令行上设置DATABASE_URL环境变量

我需要做什么配置才能让应用在本地运行?或者更具体地说,如何让应用的本地版本具有正确的DATABASE_URL/JDBC_DATABASE_URL值?

1 个答案:

答案 0 :(得分:2)

不要在本地设置DATABASE_URL,而是像这样设置JDBC_DATABASE_URL

JDBC_DATABASE_URL=jdbc:postgresql://localhost:5432/my_local_db_name?user=my_db_user&password=somePassword

如果您使用.env,也可以将其放在heroku local文件中。