Я отвечу на свой вопрос, чтобы дополнить принятый ответ более подробной информацией о свойствах среды, установленных Heroku.
Предполагая, что ваше приложение Heroku содержит переменную среды:
DATABASE_URL
= postgres://username:password@host:port/database
Heroku автоматически предоставит следующие переменные среды (которые можно использовать, например, в своем любимом клиенте SQL на основе JDBC):
JDBC_DATABASE_URL
= jdbc:postgresql://host:port/database?user=username&password=password&sslmode=require
JDBC_DATABASE_USERNAME
= username
JDBC_DATABASE_PASSWORD
= password
И, кроме того, те, которые были выбраны Spring Bootавтоматически (который можно использовать для изменения локального загрузочного профиля Spring:
SPRING_DATASOURCE_USERNAME
= аналогично JDBC_DATABASE_USERNAME
SPRING_DATASOURCE_PASSWORD
= аналогично JDBC_DATABASE_PASSWORD
SPRING_DATASOURCE_URL
= то же, что и JDBC_DATABASE_URL
Я наблюдал это, используя простую конечную точку REST:
@RequestMapping("/env")
public @ResponseBody Map<String, String> env() {
return System.getenv();
}
Будьте осторожны, чтобы не совершить ту же ошибкукак я делал: DATABASE_URL
начинается с postgres
, а префикс JDBC для Postgres - postgresql
. Использование SPRING_DATASOURCE_URL
с префиксом jdbc:postgres://
приведетна следующую ошибку:
Драйвер org.h2.Driver утверждает, что не принимает jdbcUrl, jdbc: postgres: //....