PWS — невозможно подключить UAA к базе данных

У меня возникла проблема с Pivotal Web Services, из-за которой я не могу подключиться к базе данных Postgres SQL для UAA.

У меня есть служба, определенная и привязанная к приложению, но я ввожу учетные данные вручную (не уверен, что замена параметра происходит в переменной Env)

Соответствующий раздел файла UAA.yaml:

database:
    driverClassName: org.postgresql.Driver
    url: jdbc:postgresql://babar.elephantsql.com:5432/db
    username: db
    password: randomPass
    maxactive: 15
    maxidle: 5
    minidle: 0
    removeabandoned: false
    logabandoned: true
    abandonedtimeout: 300
    evictionintervalms: 15000
    caseinsensitive: false 

Я привязан к плану ElephantSQL «Panda», который ограничивает меня до 20 одновременных подключений. Это ошибка, которую я обычно получаю в UAA при запуске:

java.sql.SQLException: Driver:org.postgresql.Driver@112ab411 вернул null для URL:postgres://db:[email protected]:5432/db 2017-01-28T14:15:57.43-0500 [ПРИЛОЖЕНИЕ /PROC/WEB/0]OUT на org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDriver(PooledConnection.java:296)

Я не уверен, почему он возвращает ноль, учетные данные и URL-адрес верны.


person StylePotato    schedule 28.01.2017    source источник
comment
Возможно, проверьте свой yaml с помощью инструмента, чтобы подтвердить его правильность. Пустое пространство имеет значение, так что у вас может быть вкладка или что-то, что ее отбрасывает. Инструменты, подобные этой справке – › yamllint.com   -  person Daniel Mikusa    schedule 29.01.2017
comment
Если YAML действителен, я проверил его с помощью валидатора, и в журналах нет ошибок.   -  person StylePotato    schedule 30.01.2017


Ответы (1)


Тот факт, что журнал показывает URL:postgres://..., по-видимому, указывает на то, что URL-адрес JDBC искажается, а jdbc: удаляется. И, кажется, добавили имя пользователя и пароль в URL-адрес, который, насколько мне известно, не поддерживается драйвером PostgreSQL.

Драйвер JDBC, которому предлагается подключиться к URL-адресу JDBC, который он не поддерживает, должен возвращать null в соответствии со спецификацией/API JDBC.

Другими словами, либо ваша конфигурация неверна, либо UAA делает что-то не так. Поскольку я не знаю Cloudfoundry, я не могу ответить на его особенности.

person Mark Rotteveel    schedule 29.01.2017
comment
Это делает то же самое для драйвера MySQL. Странно то, что это работает на моей локальной машине, просто не работает на CF. - person StylePotato; 30.01.2017
comment
Не зацикливайтесь на том факте, что он работает локально. Это приложение Spring, и оно может реагировать на среду и службы, в которых оно работает. Это означает, что приложение может работать не так локально, как на CF (например, оно может использовать базу данных H2 или HSQL локально по сравнению с Postgres или MySQL на CF, хотя есть и другие различия). Что вам понадобится, так это журналы отладки, чтобы вы могли видеть, как запускается UAA и что он делает в случае сбоя. - person Daniel Mikusa; 31.01.2017