Heroku Postgres升级后,Flyway无法连接到数据库

时间:2016-10-15 16:24:09

标签: postgresql heroku spring-boot flyway

我正在将我的heroku数据库从业余爱好者升级到标准0(使用官方说明https://devcenter.heroku.com/articles/upgrading-heroku-postgres-databases#upgrade-with-pg-copy-default)。

一切顺利,直到我推广新数据库并重新启动应用程序。然后我得到以下错误:

o.s.boot.SpringApplication               : Application startup failed
...
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'flywayInitializer' defined in class path resource [org/springframework/boot/autoconfigure/flyway/FlywayAutoConfiguration$FlywayConfiguration.class]: Invocation of init method failed; nested exception is org.flywaydb.core.api.FlywayException: Unable to obtain Jdbc connection from DataSource
...
Caused by: org.flywaydb.core.api.FlywayException: Unable to obtain Jdbc connection from DataSource
...
Caused by: org.postgresql.util.PSQLException: FATAL: no pg_hba.conf entry for host "54.xxx.xx.xxx", user "u94bf9vxxxxxx", database "d2mqk0b6xxxxxx", SSL off
...

如果我再次换回旧数据库,一切都会再次运行。我唯一要改变的是推广数据库。

连接到我需要注意的业余爱好和标准数据库之间是否存在差异?

我的application.yml的相关部分如下所示:

spring:
    datasource:
        driverClassName: org.postgresql.Driver
        url: ${JDBC_DATABASE_URL} 
        username: ${JDBC_DATABASE_USERNAME}
        password: ${JDBC_DATABASE_PASSWORD}
flyway:
    enabled: true
    locations: classpath:db/migrations

关于我如何调试这一点的任何建议也都非常受欢迎。

1 个答案:

答案 0 :(得分:3)

看起来您没有使用Heroku PostgreSQL安装所需的SSL进行连接。

见Herokus documentation on SSL for PostgreSQL

另见JDBC连接上的Herokus documentation for enabling SSL

您需要在JDBC URL中添加select * from products where prices_and_tags->"$.tag[*]" = 'Watch' 之类的内容。