postgresql не запускается?
Две недели назад я установил Ubuntu 18.04 в подсистеме Linux для Windows.
Там я установил postgresql 11 с помощью sudo apt-get install postgresql-11
В то время я мог запустить postgresql с помощью этой команды
sudo -u postgres /usr/lib/postgresql/11/bin/pg_ctl -D /etc/postgresql/11/main -l /var/log/postgresql/postgresql-11-main.log start
Все идет нормально.
Две недели спустя я пытаюсь запустить этот механизм postgresql с помощью той же команды, и получаю ошибку "FATAL: не удалось создать файл блокировки"/var/run/postgresql/.s.PGSQL.5432.lock": такого файла нет или каталог"
Я создал эту папку, дал ей chmod 777, чтобы избежать проблем с правами доступа.
Затем я получаю LOG: система базы данных была прервана; последний раз был известен в 2019-02-16 17:57:02 STD PANIC: не удалось сбросить грязные данные: функция не реализована LOG: процесс запуска (PID 94) был прерван по сигналу 6: прервано
Есть идеи, что может быть не так?
1 ответ
В PostgreSQL произошли последние изменения, связанные с fsync
это оказывается проблематичным с подсистемой Windows Linux. Конкретные PANIC
ошибка, о которой вы упоминаете, в настоящее время обсуждается в списке рассылки PG с предложенным патчем:
Пользователям WSL (подсистема Windows в Linux) необходимо отключить fsync, начиная с 11.2.
Обратите внимание, что обходной путь, предложенный в теме, превращая fsync
Выкл, не для производственного использования. Это нормально, если вы играете с Postgres на WSL и не заботитесь о надежности ваших данных. Некоторые говорят, что WSL сам по себе не для производственного использования.
Дело в том, что /var/run/postgresql
не существует, совершенно не связано. /var/run
обычно монтируется на RAM-диске и создается сценариями запуска, которые вы обходите стороной, используя процедуру запуска вручную. Типичная нормальная процедура что-то вроде systemctl start postgresql
, который работает, когда все настроено нормально, и заботится о создании этого каталога с соответствующими разрешениями.