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 start | PostgreSQL становится явным, stop сервера его не трогает |
dbms stop или dbms restart при работающем своём сервере | Отказ с названием сервера |
cluster restart, standalone restart | PostgreSQL не трогают |
| Отмена или сбой после подъёма 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