Нераспознанный параметр конфигурации "dynamic_shared_memory_type"

У меня возникли проблемы с подключением к postgres (установленному с использованием hombrew версии 9.4.4). Я ранее смог успешно подключиться. Единственное, что, я считаю, могло измениться, я установил PHP 5.5.

Я пытаюсь запустить сервер:

postgres -D /usr/local/var/postgres

LOG:  unrecognized configuration parameter "dynamic_shared_memory_type"
in file "/usr/local/var/postgres/postgresql.conf" line 130
FATAL:  configuration file "/usr/local/var/postgres/postgresql.conf"
contains errors

Мои журналы сервера возвращают те же ошибки. Вот содержимое файла postgresql.conf, который выдает ошибку:

dynamic_shared_memory_type = posix  # the default is the first option
                # supported by the operating system:
                #   posix
                #   sysv
                #   windows
                #   mmap
                # use none to disable dynamic shared memory

В попытках устранения неполадок я прокомментировал dynamic_shared_memory_type и получил эту ошибку:

FATAL:  database files are incompatible with server
DETAIL:  The data directory was initialized by PostgreSQL version 9.4, 
which is not compatible with this version 9.3.5.

Однако, запустив brew info postgres, мне сказали, что моя версия - 9.4.4.

Ответ 1

Эта команда:

$ postgres -D /usr/local/var/postgres

запускает все postgres двоичный файл сначала в $PATH.

В вашем случае это postgres 9.3.5, предположительно, из предыдущей установки и/или другого установщика. Эта версия не может работать с postgresql.conf для 9.4.x из-за нового параметра dynamic_shared_memory_type, но что более важно, она не может работать с каталогом данных 9.4.x в любом случае (форматы данных не совместимы в основных версиях).

Команда which postgres сообщит, где она находится на диске.

Обычно двоичный код postgres для brew должен располагаться в /usr/local/bin/postgres. Чтобы избежать конфликтов с другими postgres, запустите его с абсолютным путем вместо относительного:

$ /usr/local/bin/postgres -D /usr/local/var/postgres

и

 $ /usr/local/bin/postgres -v

чтобы просто проверить номер версии.

В Mac OS X существует довольно много разных инсталляторов, перечисленных в:
https://wiki.postgresql.org/wiki/Installers/Mac_OS_X
с разным расположением дисков. На Mac нет ничего необычного, чтобы попробовать разные инсталляторы и в итоге установить несколько установок postgres параллельно.