Недавно меня обманом заставили запустить одну из тех программ очистки реестра (RegistryBooster).
Казалось, что все работает нормально, пока я не попытался запустить службу postgres.
По какой-то причине «путь к исполняемому файлу» больше не задавался на странице свойств службы и, очевидно, не запускался без пути.
Как я могу исправить существующую службу или удалить / переустановить только службу, не переустанавливая postgres вообще?
Postgres 8.4 Windows XP с пакетом обновления 3 (SP3)
РЕДАКТИРОВАТЬ: Пытаясь исправить это, я случайно удалил службу. Таким образом, возникает вопрос: как мне переустановить службу, не устанавливая заново весь postgres?
Спасибо еще раз...
Попробуйте добавить / изменить ключ "HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ pgsql-8.4 \ ImagePath" в реестре (изменить версию и каталог данных):
"C:\Program Files\PostgreSQL\8.4\bin\pg_ctl.exe" runservice -w -N "pgsql-8.4" -D "C:\Program Files\PostgreSQL\8.4\data\"
или выполните команду: "C: \ Program Files \ PostgreSQL \ 8.4 \ bin \ pg_ctl.exe" runservice -w -N "pgsql-8.4" -D "C: \ Program Files \ PostgreSQL \ 8.4 \ data \"
Если не поможет, вам нужно будет переустановить PostgreSQL.
У меня было две разные установки PostgreSQL, где служба в конечном итоге самопроизвольно перестала работать, я думаю, из-за проблем с разрешениями после крупного обновления Windows (и определенно не из-за очистки реестра!).
Но в любом случае я подумал, что стоит отметить, что то, что @ pstanton's говорит в комментарии к ответу @alvosu, действительно является лучшим ответом, а именно:
Чтобы удалить службу:
pg_ctl unregister -N "PostgreSQL 9.6 Server"
(используйте короткое имя, которое действительно имеет ваша служба)
затем переустановить
pg_ctl register -N "PostgreSQL 9.6 Server"
Вам нужно добавить флаг -D "C:\Program Files\PostgreSQL\data\pg96"
(или любой другой правильный путь) к команде регистрации, если у вас нет PGDATA
набор переменных среды.