Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 配置Heroku应用程序本地版本的数据库访问_Java_Postgresql_Heroku - Fatal编程技术网

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

Java 配置Heroku应用程序本地版本的数据库访问,java,postgresql,heroku,Java,Postgresql,Heroku,我正在修改“用Java开始Heroku”示例应用程序(/),并且在本地数据库连接方面遇到问题 相关代码来自主类: public class Main { @Value("${spring.datasource.url}") private String dbUrl; [...] @Bean public DataSource dataSource() throws SQLException { if (dbUrl == null || dbUr

我正在修改“用Java开始Heroku”示例应用程序(/),并且在本地数据库连接方面遇到问题

相关代码来自主类:

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\u DATABASE\u URL:}
。根据,
${JDBC\u DATABASE\u URL:}
是在运行时生成的。在部署的版本上,应用程序可以很好地计算出“真实”的DB URL,但是当我发现Hikari错误时

dataSource或dataSourceClassName或jdbcUrl是必需的

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

我已经

  • 已将最新版本的Postgres下载到我的本地计算机
  • 已验证它正在按预期使用端口5432
  • 使用
    set DATABASE\u URL在命令行上设置DATABASE\u URL环境变量=postgres://my_db_user:somePassword@localhost:5432/my\u local\u db\u name

要让应用程序在本地运行,我还需要进行哪些配置?或者更具体地说,如何使应用程序的本地版本具有正确的
数据库URL/JDBC\u数据库URL
值?

不要在本地设置
数据库URL
,而是像这样设置
JDBC\u数据库URL

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

如果您使用的是
heroku local

什么是您的操作系统?@clarity123 Win10不会因为硬编码而阻止应用程序在部署到生产环境时获取正确的值?不,根据文档
,.env文件允许您捕获本地运行应用程序所需的所有配置变量他们描述它的方式听起来像是专门为本地使用而构建的。即使在您链接的github上,它也会显示
确保您有一个本地.env文件
,因此即使在这里,它也被视为本地事务
.env
不是远程使用的(在heroku上),甚至应该添加到您的
.gitignore
.env。。。应仅用于本地配置。更新.gitignore文件以排除.env文件。
@codefinger因首先考虑
.env
而获得好评。如果您喜欢我的文档,您可以对特定评论进行升级,谢谢:)