无法识别的配置参数"dynamic_shared_memory_type"

Kyl*_*ase 12 php postgresql

我无法连接到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
Run Code Online (Sandbox Code Playgroud)

我的服务器日志返回相同的错误.以下是抛出错误的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
Run Code Online (Sandbox Code Playgroud)

在尝试进行故障排除时,我注释掉了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.
Run Code Online (Sandbox Code Playgroud)

但是,运行brew信息postgres,我被告知我的版本是9.4.4.

Dan*_*ité 13

这个命令:

$ postgres -D /usr/local/var/postgres
Run Code Online (Sandbox Code Playgroud)

启动postgres最先出现的二进制文件$PATH.

在你的情况下,它恰好是postgres 9.3.5,可能来自之前的安装和/或其他安装程序.由于新dynamic_shared_memory_type参数,该版本无法与9.4.x的postgresql.conf一起使用,但更重要的是它无法用于9.4.x数据目录(数据格式在主要版本之间不兼容).

该命令which postgres将告诉它在磁盘上的位置.

通常postgres,brew 的二进制文件应位于/usr/local/bin/postgres.为避免与其他postgres发生冲突,请使用绝对路径而不是相对路径启动它:

$ /usr/local/bin/postgres -D /usr/local/var/postgres
Run Code Online (Sandbox Code Playgroud)

 $ /usr/local/bin/postgres -v
Run Code Online (Sandbox Code Playgroud)

只检查版本号.

在Mac OS X上,有许多不同的安装程序,如下所示:
https://wiki.postgresql.org/wiki/Installers/Mac_OS_X,
具有不同的磁盘布局.在Mac上尝试不同的安装程序并最终并行安装几个postgres并不罕见.