我正在尝试在Windows Server 2008上安装PostgreSQL 9.0.1,但每次都会出现这样的错误消息
“运行安装后步骤时出现问题。安装可能无法完成 正确。无法启动数据库服务器“
在安装日志中,由于initdb.exe
失败,错误是
“initdb需要程序postgres,但是没有找到 与D:\ PostgreSQL \ 9.0 \ bin \ initdb.exe相同的目录,检查一下 安装“。
我在互联网上搜索了这样的错误并尝试了此页面中的解决方案“Installing PostgreSQL on Windows Server 2008”,但没有帮助。
在阅读initdb
的代码后,我知道它是由函数pipe_read_line中的窗口api CreateProcess引起的。 CreateProcess的调用返回-5(访问被拒绝)。这是因为initdb是在函数CreateRestrictedProcess中调用的子进程中执行的。
我知道这是由于权限设置,我运行gpedit.msc将用户组(甚至每个人)添加到几乎所有权限策略中,但错误仍然存在。
我还为每个人分配了安装目标文件夹的完全控制权,没有帮助!
我也试过postgresql 9.6.2,错误仍然存在: - )
从代码中,我知道如果环境变量PG_RESTRICT_EXEC
的值为1,则initdb将不会在受限制的进程中执行。所以在运行initdb.exe之前,我在命令提示符下设置了一个环境PG_RESTRICT_EXEC = 1,然后运行initdb.exe。这次这样的错误消失了!!
所以我想知道如何更改os设置以允许安装正常运行!