ProjectDB: почему приложение подключается не к той базе

2 мин чтения

Какие настройки подключения ProjectDB читает первыми и почему изменение пароля иногда ничего не меняет.

Проверка подключения
  1. КаталогЗадаёт контекст запуска
  2. КонфигурацияОпределяет подключение
  3. База данныхПринимает запросы

Вы поменяли подключение, перезапустили ProjectDB, а приложение снова открыло прежнюю базу. Прежде чем менять пароль ещё раз, посмотрите, откуда оно берёт настройки. Локальный файл может иметь приоритет над удалённой конфигурацией. На выбор также влияют имя приложения и папка, из которой его запускают.

Имя приложения, каталог и пользователь

Запишите имя приложения, рабочий каталог и пользователя операционной системы. Именованный файл db.PDB-SERVER.json относится к конкретному приложению. Файл db.json используется как общий локальный вариант. Такой файл может объяснить, почему параметры удалённой конфигурации не дают ожидаемого результата.

{
  "user": "app_user",
  "pass": "REPLACE_WITH_DATABASE_PASSWORD",
  "host": "127.0.0.1",
  "port": 5780,
  "db": "projectdb_training",
  "schema": "api_pdb",
  "min_connect": 1,
  "max_connect": 10,
  "channel": 1,
  "ssl": false
}

В примере показана структура настроек. Адрес, имя базы и данные доступа нужно указать свои. Значение ssl выбирайте по требованиям вашего соединения. Не размещайте конфигурацию в публичном каталоге сайта и не коммитьте заполненный файл с паролем в репозиторий.

Не смешиваем два пароля

Пароль сервера конфигурации и пароль PostgreSQL решают разные задачи. Вариант запуска с --host и --password описывает удалённую конфигурацию ProjectDB. Он не превращает указанный --password в пароль пользователя базы. Перед изменением реквизитов определите, на каком именно шаге возникает ошибка.

Как узнать, какая база подключена

Запустите приложение с явно выбранным каталогом, посмотрите его журнал и подтвердите целевую базу на стороне PostgreSQL. Изменяйте один источник настроек за раз. Перед удалением локального файла сохраните защищённую копию и поймите, какой источник начнёт использоваться следующим.

Если приложений несколько, заведите небольшую таблицу: имя, рабочая папка, способ запуска и база. Пароли туда не записывайте. По такой таблице проще заметить перепутанное подключение и исправить его без повторной установки ProjectDB.

Источники и дальнейшее чтение