当前位置: 首页 > 知识库问答 >
问题:

用Java连接到heroku Postgres db

锺离逸春
2023-03-14

我无法连接到heroku数据库,当我将我的应用程序部署到heroku时,我在日志中得到了以下内容:

[localhost-startStop-1]警告org.springframework.web.context.support.annotationConfigWebApplicationContext-上下文初始化过程中遇到的异常-取消刷新尝试:org.springframework.beans.factory.beanCreationException:创建类路径资源[path/databaseConfig.class]中定义的名为“Entity ManagerFactory”的bean时出错:init方法调用失败;嵌套异常是org.hibernate.service.spi.serviceException:无法创建请求的服务[org.hibernate.engine.jdbc.env.spi.jdbcEnvironment]

我的数据库配置:

public class DataBaseConfig {

@Resource
private Environment env;

@Bean
public LocalContainerEntityManagerFactoryBean entityManagerFactory() throws URISyntaxException{
    LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean();

    em.setDataSource(dataSource());
    em.setPackagesToScan(env.getRequiredProperty("db.entity.package"));
    em.setJpaVendorAdapter(new HibernateJpaVendorAdapter());
    em.setJpaProperties(getHibernateProperties());

    return em;
}

@Bean
public BasicDataSource dataSource() throws URISyntaxException {
    URI dbUri = new URI(System.getenv("jdbc:postgresql://user:password@Host:5432/databaseName"));

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

    BasicDataSource basicDataSource = new BasicDataSource();
    basicDataSource.setUrl(dbUrl);
    basicDataSource.setUsername(username);
    basicDataSource.setPassword(password);

    return basicDataSource;
}
}

我做错了什么?

共有1个答案

梁骞仕
2023-03-14
JDBC_DATABASE_URL
JDBC_DATABASE_USERNAME
JDBC_DATABASE_PASSWORD

您可能知道,如果Spring Boot在application.properties文件中找到Spring.datasource.*属性,它将自动配置数据库。下面是我的application.properties的一个示例

spring.datasource.url=${JDBC_DATABASE_URL}
spring.datasource.username=${JDBC_DATABASE_USERNAME}
spring.datasource.password=${JDBC_DATABASE_PASSWORD}
spring.jpa.show-sql=false
spring.jpa.generate-ddl=true
spring.jpa.hibernate.ddl-auto=update

Hibernate/Postgres依赖关系

在我的例子中,我使用的是Hibernate(与PostgreSQL绑定在spring-boot-starter-jpa中,所以我需要在构建中正确的依赖关系。gradle:

dependencies {
    compile("org.springframework.boot:spring-boot-starter-data-jpa")
    compile('org.postgresql:postgresql:9.4.1212')
}
 类似资料:
  • 问题内容: 码: CFG: 问题是我有一些密钥对,我用pkcs11-tool添加了它们。 softhsm的版本是1.2.1 为什么在密钥库中没有任何别名?如何解决这个问题? 问题答案: 我们将很快发布SoftHSM 1.3.0。它支持证书,并已通过Java测试。 SoftHSM.java: softhsm.cfg:

  • 我正在开发一个Java的Restful Web应用程序,并计划将MongoDB与吗啡用作ODM。由于我是MongoDB的新手,我需要一些建议。 > 处理db连接的最佳方法是使用db连接池,mongoClient负责处理。 所以我需要重用上面的数据存储,而不是在每次请求时创建一个新实例,因为它会浪费大量资源并影响性能。我应该将上述实现为单例类吗?有人能帮我解决这个问题吗?

  • 问题内容: 我正在尝试从Java连接到Hive服务器1。很久以前我在这个论坛上发现了一个问题,但这对我不起作用。我正在使用此代码: 这就是指南中显示的代码。我已经在.java的同一路径中复制了hive- metastore,service,jdbc,exec,core和更多.jar。当我编译它时,我得到以下消息: 有人知道这里发生了什么吗? 问题答案: 尝试 代替 希望您在代码中添加了语句

  • 问题内容: 我在使用Spring使用凭据访问MongoDB时遇到问题。虽然没有凭据,但它就像一个咒语,但是使用它们却无法说 一定是由于新的auth默认设置,您可以在http://docs.mongodb.org/manual/core/authentication/中进行阅读 在3.0版中进行了更改:SCRAM-SHA-1是从3.0系列开始的MongoDB版本的默认机制。 问题: 有人找到一种使用

  • 请知道,我对数据库很陌生。我能够正确安装mySQL和java连接器驱动程序。但每当我在eclipse中运行程序并尝试从我创建的数据库中检索信息时,我都会收到以下消息:“需要SSL连接,但服务器不支持”。下面是我要使用安全SSL连接运行的代码: `公共静态void main(字符串[]参数){

  • 我正在尝试使用spring ldap 1.3.1连接到windows server 2008上的ldap active directory。发布和ldap配置如下所示: ldap url是:ldap://dc.fabrikam.com 用户名:管理员 密码:123456 -Springldap配置如下: > LDAPContactDAO: -在异常之前调试: 尝试使用getAllContactNa