v8-runner

dbms

Команды dbms запускают и останавливают PostgreSQL для базы, объявленной dbms.managed, на машине раннера Windows, без службы и без прав администратора. Вашу СУБД раннер только использует и не трогает её процессы.

Вывод

dbms start

v8-runner dbms start

Запускает PostgreSQL из каталога tools.postgres.path и отдаёт ответ после того, как он принял соединение. При первом запуске создаёт каталог данных и пароль. Слушает только 127.0.0.1, вход — scram-sha-256. Порт выбирается вне динамического диапазона и закрепляется, потому что на него ссылается зарегистрированная база. Занят чужим процессом — команда отказывает и называет его, а переносить PostgreSQL на другой порт не умеет. PostgreSQL живёт между командами. Вид СУБД, адрес и пароль не объявляются. На Linux и macOS команда отказывает.

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

v8-runner dbms start --dry-run

Показывает каталог данных, журнал и закреплённый порт, если PostgreSQL уже запускался. Ничего не запускает.

dbms status

v8-runner dbms status

Отвечает, работает ли PostgreSQL базы из --infobase или origin; строка соединения в --infobase — отказ: не запущен, запускается, запущен раннером или порт занят не раннером. Для своей СУБД называет PID, адрес, имя пользователя, путь к файлу пароля и кто её поднял. Значение пароля не показывает. Замок рабочей копии команде не нужен. Ключа --dry-run у неё нет.

dbms stop

v8-runner dbms stop

Останавливает свой PostgreSQL и ждёт завершения его процессов. Данные остаются. С --dry-run показывает план и ничего не останавливает. Пока работает свой сервер этой базы, команда отказывает и называет его. Если PostgreSQL не запущен, останавливать нечего, и команда успешна; чужой процесс на этом порту она называет и не трогает.

dbms restart

v8-runner dbms restart

То же, что dbms stop и затем dbms start. Пока работает свой сервер этой базы, команда отказывает и называет его.

Кто что останавливает

СитуацияЧто происходит
PostgreSQL поднят шагом cluster start или standalone startПарный stop гасит сервер и PostgreSQL
После этого вызван dbms startPostgreSQL становится явным, stop сервера его не трогает
dbms stop или dbms restart при работающем своём сервереОтказ с названием сервера
cluster restart, standalone restartPostgreSQL не трогают
Отмена или сбой после подъёма PostgreSQLГасится только то, что подняла эта команда
Сервер упал, неявный PostgreSQL живПарный stop гасит PostgreSQL
PostgreSQL упал, свой сервер живdbms status называет падение, dbms start поднимает его на прежнем порту, и он становится явным
stop сорвался на части процессовОтвет называет живые, повтор stop продолжает
Запись не совпала с процессом, например после перезагрузкиСлужба считается остановленной, следующий start поднимает её над прежними данными и на прежних портах
На порту работает чужой процессstop успешен и называет его, start отказывает и называет его
tools.postgres.path больше не объявленstatus и stop работают по пути из записи
Рабочая команда, которой нужна база, при неподнятой службеОтказ до запуска платформы с названием следующей команды

Данные лежат под localPath/infobases/<база>/managed/postgres/ (по умолчанию .local/ рядом с v8project.yaml): удаление workPath их не трогает. Команды удаления данных у раннера нет.

Классы ответов

КлассКогда возникает и что означает
PostgreSQL запущенdbms start запустил PostgreSQL, он принял соединение. Пример
Состояниеdbms status называет свой PostgreSQL или говорит, что он не запущен. Пример
PostgreSQL остановленdbms stop завершил свои процессы. Пример
Сервер ещё работаетdbms stop при работающем своём сервере отказывает и называет его: invalid_argument, выход CLI 2. Пример
Нет сборки или другая ОСtools.postgres.path не объявлен, в нём нет сборки или это Linux либо macOS: environment_unavailable, выход CLI 2. Пример

Причины отказов и различия между ошибкой команды, ошибкой шага и диагностикой запуска — в словаре ответов.

Варианты ответа

PostgreSQL запущен

dbms start: started PostgreSQL, pid 40112
  address  127.0.0.1 port=24432
  user  postgres
  password  .local/infobases/origin/managed/postgres/password
  data  .local/infobases/origin/managed/postgres/data
  log  .local/infobases/origin/managed/postgres/postgres.log

Состояние своего PostgreSQL

dbms status: origin: PostgreSQL, started by this working copy, pid 40112
  address  127.0.0.1 port=24432
  user  postgres
  password  .local/infobases/origin/managed/postgres/password
  data  .local/infobases/origin/managed/postgres/data
  log  .local/infobases/origin/managed/postgres/postgres.log

PostgreSQL остановлен

dbms stop: PostgreSQL pid 40112 stopped

Сервер ещё работает

ERROR: validation error: the standalone of 'origin' is still running on this PostgreSQL; run standalone stop first

Нет сборки

ERROR: environment unavailable: the PostgreSQL build was not found, and the runner does not download it: declare tools.postgres.path, the directory of the build or its bin; the free build "PostgreSQL for 1C" by Postgres Professional is the current Setup.exe in https://repo.postgrespro.ru/1c/1c-17/win/, under the PostgreSQL License (license.txt in the build); its installer needs administrator rights and may register its own service, which the runner does not use; the runner needs only the bin directory with pg_ctl