问题描述
我尝试将我的应用程序部署到Heroku。我可以看到日志有异常,例如:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'flyway' defined in class path resource [org/springframework/boot/autoconfigure/flyway/FlywayAutoConfiguration$FlywayConfiguration.class]: Bean instantiation via factory method Failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.flywaydb.core.Flyway]: Factory method 'flyway' threw exception; nested exception is org.flywaydb.core.api.FlywayException: Unable to autodetect JDBC driver for url: jdbc:postgres://hostname:5432/databaseName
。
我知道为什么由于网址中的 jdbc:postgres :// ...而有该异常。 Flyway期望这样的URL: jdbc:postgresql :// ....来定义驱动程序。但是Heroku提供的数据库URL不带后缀 ql 。我该如何解决?
解决方法
当我看到heroku提供的网址时,我有点困惑。
postgres://host_name:5432/database_name
但是我只是将其更改为
spring.flyway.url=jdbc:postgresql://${DB_HOST}:5432/${DB_NAME}
在我之前
spring.flyway.url=jdbc:${DATABASE_URL} => postgres://host_name:5432/database_name
现在我只需将 postgres 替换为 postgresql ,现在我的飞行路线就没有问题了。