【问题标题】:Configuring database access for local version of Heroku app为本地版本的 Heroku 应用程序配置数据库访问
【发布时间】:2018-08-23 16:50:41
【问题描述】:

我正在修改“使用 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 的值是 Spring 从 application.properties 文件中提取的,该文件包含内容

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

[...]

所以,属性文件只是引用另一个变量${JDBC_DATABASE_URL:}。根据Heroku's documentation on database connections${JDBC_DATABASE_URL:}是在运行时生成的。在已部署的版本上,该应用程序可以很好地计算出“真实”数据库 URL,但是当我 run locally 时,我得到了 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 值?

【问题讨论】:

  • 你的操作系统是什么?
  • @clarity123 Win10

标签: java postgresql heroku


【解决方案1】:

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

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

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

【讨论】:

  • 在部署到生产环境时不会进行硬编码以防止应用程序获取正确的值吗?
  • 不,根据文档The .env file lets you capture all the config vars that you need in order to run your app locally. 他们描述它的方式听起来像是专为本地使用而构建的。 devcenter.heroku.com/articles/heroku-local 。即使在您链接的 github 上,它也会显示 ensure you have a local .env file,所以即使在这里它也被视为本地事务。 github.com/heroku/java-getting-started
  • .env 不能远程使用(在 heroku 上),甚至应该添加到您的 .gitignore
  • .env ... should only be used for local configuration. Update your .gitignore file to exclude the .env file.devcenter.heroku.com/articles/…
  • @codefinger 因首先考虑.env 而受到赞誉。如果您喜欢我提到的文档,您可以对特定评论进行投票,谢谢 :)
猜你喜欢
  • 2019-11-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-27
相关资源
最近更新 更多