Если во время запуска службы PostgreSQL:
sudo systemctl start postgresql.service
это не получилось и появилось следующее сообщение:
Job for postgresql.service failed because the control process exited with error code. See "systemctl status postgresql.service" and "journalctl -xe" for details.
То проверьте статус данной службы:
systemctl status postgresql.service
В моём случае это:
● postgresql.service - PostgreSQL database server Loaded: loaded (/usr/lib/systemd/system/postgresql.service; disabled; vendor preset: disabled) Active: failed (Result: exit-code) since Mon 2020-04-20 12:23:08 MSK; 8s ago Process: 63126 ExecStartPre=/usr/bin/postgresql-check-db-dir ${PGROOT}/data (code=exited, status=1/FAILURE) апр 20 12:23:08 HackWare systemd[1]: Starting PostgreSQL database server... апр 20 12:23:08 HackWare postgres[63126]: An old version of the database format was found. апр 20 12:23:08 HackWare postgres[63126]: See https://wiki.archlinux.org/index.php/PostgreSQL#Upgrading_PostgreSQL апр 20 12:23:08 HackWare systemd[1]: postgresql.service: Control process exited, code=exited, status=1/FAILURE апр 20 12:23:08 HackWare systemd[1]: postgresql.service: Failed with result 'exit-code'. апр 20 12:23:08 HackWare systemd[1]: Failed to start PostgreSQL database server.
Ключевой в этом выводе является строка:
An old version of the database format was found.
Она говорит о том, что найдена база данных старого формата.
Для решения проблемы предлагается перейти по ссылке: https://wiki.archlinux.org/index.php/PostgreSQL#Upgrading_PostgreSQL
По этой ссылке написано довольно размыто и команды, в целом, оказались не рабочими. В частности команды для обновления базы данных не заработали вовсе из-за отсутствия нужных исполнимых файлов (я искал их по всей системе, а не только в указанных расположения).
Я сумел довести предложенные в Вики команды до рабочего состояния. Эти команды переименуют папку со старой базой данных в /var/lib/postgres/olddata и инициируют новую базу данных. Меня это устраивает, поскольку в старой базе данных нет ничего значимого. Если вы хотите сохранить старые данные, то обратитесь к приведённой выше инструкции и добейтесь обновления формата!
Итак, чтобы инициировать базу данных нового формата PostgreSQL выполните следующие команды:
sudo mv /var/lib/postgres/data /var/lib/postgres/olddata sudo mkdir /var/lib/postgres/data /var/lib/postgres/tmp sudo chown postgres:postgres /var/lib/postgres/data /var/lib/postgres/tmp cd /var/lib/postgres/tmp sudo -u postgres initdb -D /var/lib/postgres/data
После этого вновь запустите службу и проверьте её статус:
sudo systemctl start postgresql.service systemctl status postgresql.service
Больше информации вы найдёте в официальной Вики: https://wiki.archlinux.org/index.php/PostgreSQL#Upgrading_PostgreSQL
Близкие статьи
- Как запустить Metasploit в BlackArch (95.7%)
- Восстановление из чёрного экрана при неудачной установке проприетарных AMD драйверов в BlackArch / Arch (54.3%)
- Решение проблемы X server не поднимается в VirtualBox VM после обновления ядра до 4.5 (54.3%)
- Решение ошибки reaver: invalid option -- 'K' (54.3%)
- Решение проблемы Arch Linux kernel 4.7 в VirtualBox: reached target graphical interface (54.3%)
- Новый установщик BlackArch и новые ISO диски (новость от 27 апреля 2016 года) (RANDOM - 4.3%)
Вот это мне пригодилось! Случайно нажал кнопочку - обновить. И через пару дней выяснил, когда понадобилось, что БД не стартует. Отсюда правило - не обновляй то, что не сломано) Так получается…