【问题标题】:Getting Connection closed Exception when trying to connect to PostgreSQL DB with JHipster Application尝试使用 JHipster 应用程序连接到 PostgreSQL 数据库时出现连接关闭异常
【发布时间】:2016-04-23 22:37:51
【问题描述】:

当我尝试使用 mvn spring-boot:run 启动服务器时出现此异常。我之前做了一个 mvn clean 。我无法想象为什么会发生这种情况。配置似乎是正确的。

liquibase.exception.DatabaseException: org.postgresql.util.PSQLException: This connection has been closed.
at liquibase.database.jvm.JdbcConnection.setAutoCommit(JdbcConnection.java:363) ~[liquibase-core-3.4.2.jar:na]
at liquibase.database.AbstractJdbcDatabase.close(AbstractJdbcDatabase.java:1176) ~[liquibase-core-3.4.2.jar:na]
at liquibase.integration.spring.SpringLiquibase.afterPropertiesSet(SpringLiquibase.java:400) ~[liquibase-core-3.4.2.jar:na]
at com.mycompany.myapp.config.liquibase.AsyncSpringLiquibase.initDb(AsyncSpringLiquibase.java:63) ~[classes/:na]
at com.mycompany.myapp.config.liquibase.AsyncSpringLiquibase.lambda$afterPropertiesSet$31(AsyncSpringLiquibase.java:49) ~[classes/:na]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) ~[na:1.8.0_60]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) ~[na:1.8.0_60]
at java.lang.Thread.run(Thread.java:745) ~[na:1.8.0_60]
Caused by: org.postgresql.util.PSQLException: This connection has been closed.
at org.postgresql.jdbc2.AbstractJdbc2Connection.checkClosed(AbstractJdbc2Connection.java:851) ~[postgresql-9.4-1203-jdbc42.jar:9.4]
at org.postgresql.jdbc2.AbstractJdbc2Connection.setAutoCommit(AbstractJdbc2Connection.java:793) ~[postgresql-9.4-1203-jdbc42.jar:9.4]
at     com.zaxxer.hikari.proxy.ConnectionProxy.setAutoCommit(ConnectionProxy.java:334) ~[HikariCP-2.4.1.jar:na]
at     com.zaxxer.hikari.proxy.HikariConnectionProxy.setAutoCommit(HikariConnectionProxy.java) ~[HikariCP-2.4.1.jar:na]
at     liquibase.database.jvm.JdbcConnection.setAutoCommit(JdbcConnection.java:361) ~[liquibase-core-3.4.2.jar:na]
... 7 common frames omitted

这是我的应用程序-dev.yaml:

# ===================================================================
# Standard Spring Boot properties.
# Full reference is available at:
# http://docs.spring.io/spring-boot/docs/current/reference/html/common-    application-properties.html
# ===================================================================

spring:
profiles:
    active: dev
devtools:
    restart:
        enabled: true
    livereload:
        enabled: false # we use Grunt + BrowserSync for livereload
datasource:
    driver-class-name: org.postgresql.ds.PGSimpleDataSource
    url: jdbc:postgresql://localhost:3306/bowl
    name:
    username: postgres
    password: root
jpa:
    database-platform:     com.mycompany.myapp.domain.util.FixedPostgreSQL82Dialect
    database: POSTGRESQL
    show_sql: true
    properties:
        hibernate.cache.use_second_level_cache: true
        hibernate.cache.use_query_cache: false
        hibernate.generate_statistics: true
        hibernate.cache.region.factory_class:     org.hibernate.cache.ehcache.SingletonEhCacheRegionFactory
data:
    elasticsearch:
        cluster-name:
        cluster-nodes:
        properties:
            path:
              logs: target/elasticsearch/log
              data: target/elasticsearch/data
mail:
    host: localhost
messages:
    cache-seconds: 1
thymeleaf:
    cache: false

liquibase:
contexts: dev

server:
port: 8080

# ===================================================================
# JHipster specific properties
# ===================================================================

jhipster:
cache: # Hibernate 2nd level cache, used by CacheConfiguration
    timeToLiveSeconds: 3600
    ehcache:
        maxBytesLocalHeap: 16M
mail: # specific JHipster mail property, for standard properties see     MailProperties
    from: test@localhost
metrics: # DropWizard Metrics configuration, used by MetricsConfiguration
    jmx.enabled: true
    spark:
        enabled: false
        host: localhost
        port: 9999
    graphite:
        enabled: false
        host: localhost
        port: 2003
        prefix: test

这是我的 application.yaml:

spring:
jpa:
    open-in-view: false
    hibernate:
        ddl-auto: none
        naming-strategy: org.springframework.boot.orm.jpa.hibernate.SpringNamingStrategy
messages:
    basename: classpath:/i18n/messages
mvc:
    favicon:
        enabled: false
thymeleaf:
    mode: XHTML

security:
basic:
    enabled: false

# ===================================================================
# JHipster specific properties
# ===================================================================

jhipster:
async:
    corePoolSize: 2
    maxPoolSize: 50
    queueCapacity: 10000
#cors: #By default CORS are not enabled. Uncomment to enable.
    #allowed-origins: "*"
    #allowed-methods: GET, PUT, POST, DELETE, OPTIONS
    #allowed-headers: "*"
    #exposed-headers:
    #allow-credentials: true
    #max-age: 1800
mail:
    from: test@localhost
security:
    rememberme:
        # security key (this key should be unique for your application, and kept secret)
        key: 7ba7d54b8c54ee10147cf46baa898c4cb7b4a597
swagger:
    title: test API
    description: test API documentation
    version: 0.0.1
    termsOfServiceUrl:
    contact:
    license:
    licenseUrl:

【问题讨论】:

  • 我在这个问题上搞砸了三天。我什至用 mySQL 尝试过,但在那里我遇到了类似的错误。我切换了数据源驱动程序并尝试了多种方言。我无法想象为什么会发生此异常。配置是 Jhipster 原始的,除了 url 和 user/pw conf。我还重新安装了几次 Jhipster。
  • 这看起来像是一个环境问题,因为我们(显然)在示例项目中没有这种问题。您可以尝试在github.com/jhipster/jhipster-devbox 使用我们的“devbox”吗?它默认使用 MySQL,但你也可以安装 Postgresql。
  • driver-class-name: org.postgresql.ds.PGSimpleDataSource 可能是个问题。使用 spring boot,您无需指定驱动程序(它从数据库 url 和类路径中计算出来)。尝试删除此行
  • 感谢您的意见。我会试试这个。
  • 好的,看起来我的实体文件导致了错误。但是,它们不会在生成器中引发错误。我想在这种情况下我应该为这个问题提出一个新问题?

标签: postgresql maven spring-mvc spring-boot jhipster


【解决方案1】:

问题是由实体引起的。我必须按特定顺序生成关系才能生成正确的 liquibase 变更日志。顺序是:

many-to-one -> one-to-one (owner) -> many-to-many (owner) -> all others

弄清楚这一点确实花了我半周的时间。真傻。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-28
    相关资源
    最近更新 更多