安装PostgreSQL 9.2时出现问题

时间:2013-03-08 05:16:47

标签: windows postgresql installation

我一直在尝试在我的机器(Windows 7 64位)上安装64位版本的PostgreSQL 9.2 for Windows并收到此错误:

The environment variable COMPSPEC does not seem to point to the cmd.exe or there is a trailing semi colon present.

我已经以管理员身份安装了它。

我禁用了防病毒软件(Microsoft Security Essentials)和防火墙。

运行:

"%COMSPEC%" /C "echo test ok"

返回test ok

我检查了我的系统环境变量是否有尾部半冒号,我找不到任何。

然后我安装了32位版本并设法使用不同的错误消息到达安装结束:Problem running post-install step. Installation may not complete correctly Error reading the C:\Program Files (x86)\PostgreSQL\9.2\data\postgresql.conf但该目录中没有postgresql.conf文件。它确实安装了应用程序,当我尝试连接服务器上的红色X时,它表示底部出现故障,并且在我输入密码后它将无法连接。

如何连接到此服务器连接?

11 个答案:

答案 0 :(得分:13)

ComSpec是任何安装失败的常见错误消息。

识别问题

  1. 导航到以下路径 C:\ Users \用户XXXXXX \应用程序数据\本地\温度
  2. 打开' bitrock_installer_XXXX.log'
  3. 检查,如果您收到以下错误:
  4.   

    脚本stderr:    '" C:\用户\ XXXXX \应用程序数据\本地\ TEMP \ POSTGR〜1 \ TEMP_C〜1.BAT"'不被识别为内部或外部命令,可操作程序或批处理文件。

         

    运行错误

         

    C:\ Users \ XXXXX \ AppData \ Local \ Temp / postgresql_installer_47b21c4ea1 / temp_check_comspec.bat:
      '" C:\用户\ XXXXX \应用程序数据\本地\ TEMP \ POSTGR〜1 \ TEMP_C〜1.BAT"'不被视为内部或外部命令,

         

    可操作程序或批处理文件。

    这是' 8.3 file names and directories' (例如' \ Postgres Install' - >' \ POSTGR~1') Microsoft关于禁用8.3文件名和目录的文章:https://support.microsoft.com/en-gb/kb/121007

    解决方案:

    1. 以管理员模式打开命令提示符
    2. 执行以下命令以根据您的驱动器或所有驱动器更改格式

      示例命令:

      fsutil 8dot3name set 1"      - disable 8dot3 name creation on all volumes
      fsutil 8dot3name set C: 1"   - disable 8dot3 name creation on c:
      
    3. 以具有管理员权限的用户身份执行安装

    4. 安装后,请考虑将8dot3name设置重置为默认值(2)以避免意外后果
    5. 希望它能解决问题!

答案 1 :(得分:1)

COMPSPEC它不仅仅是COMSPEC。请显示输出:

echo %COMSPEC%

请注意,COMSPEC可以设置为您正在运行安装程序的管理员帐户中的不同内容。我不知道如何找到它,但它可能出现在PostgreSQL安装程序日志中,所以请上传并链接到您的帖子中。有关获取安装程序日志的位置的信息,请参阅Reporting an installation error

请参阅PostgreSQL for Windows常见问题条目Check the COMSPEC environment variable

Here's a report I made建议安装人员明确地对此进行测试here's my blog post on the topic

答案 2 :(得分:1)

我遇到了同样的问题,我在日志中找到了:

脚本stderr:  “C:\ Users \ S300”无法识别为内部或外部命令, 可操作程序或批处理文件。

运行C:\ Users \ S300(i5)\ AppData \ Local \ Temp / postgresql_installer_56caeadbd6 / temp_check_comspec.bat时出错:'C:\ Users \ S300'无法识别为内部或外部命令, 可操作程序或批处理文件。

我将用户变量TEMP更改为D:\ TEMP,将TMP更改为D:\ TEMP。 并解决了我的问题。

答案 3 :(得分:1)

非常容易解决:

  1. 只需在“控制面板”中打开“高级系统设置”,然后创建一个新的系统变量(在System Variable而不是User Variable部分)。

  2. 在变量名称中输入ComSpec,然后在变量值中输入C:\Windows\system32\cmd.exe

  3. 替代修复:

    如果您在“系统变量”部分中已经有ComSpec变量,请删除其末尾的;,这应该修复它。

答案 4 :(得分:0)

我有类似的问题。安装后,data文件夹不包含postgres.conf文件。它只包含一个名为“pg_log”的文件夹。 我描述了我在这里使用的解决方案:Postgres Installation Error reading file postgresql.conf

基本上,检查用户是否具有postgres文件夹的完全权限并再次运行“init_db”和“pg_ctl start”命令会很有帮助。如果路径包含空格字符,请尝试使用pg_ctl数据文件夹参数的相对路径。

答案 5 :(得分:0)

我正在运行Windows Server 2003 R2,而我无法使用安装程序解决此问题,因此我使用了二进制PostgreSQL包。希望这对于那些不想重新安装操作系统的人来说是另一种选择。

首先,一些背景(希望对开发人员有用)

它开始时postgres服务无法启动(服务器已经运行了一年多)。我以为它是一个损坏的PostgreSQL安装,所以我卸载并尝试重新安装。我遇到了以下错误:

There has been an error.
The environment variable COMSPEC does not seem to point to the cmd.exe or there is a trailing semicolon present.
Please fix this variable and restart installation.

但是,COMSPEC变量设置正确,验证时为:

echo %COMSPEC%
C:\WINDOWS\system32\cmd.exe

"%COMSPEC%" /C "echo test ok"
test ok

由于这是Windows Server 2003,因此管理员帐户周围没有UCA包装,因此不会导致问题。

手动安装

NET USER postgres /ADD

C:\pgsql\bin\initdb.exe -U postgres -A password -E utf8 -W -D C:\pgsql\data

runas /user:postgres "C:\pgsql\bin\pg_ctl -D C:/pgsql/data -l C:/pgsql/logfile.txt start"

答案 6 :(得分:0)

只需以管理员身份运行并更改环境系统变量即可 比如创建一个新变量' ComSpec'和值类型' C:\ Windows \ system32 \ cmd.exe'。

答案 7 :(得分:0)

就我而言,安装程序位于%USERPROFILE%\ DownloadsP {Windows下载文件夹}中,我将安装程序移至桌面并再次运行。很奇怪它工作大声笑。

答案 8 :(得分:0)

如果安装程序exe在网络共享上,则该安装程序实际上可能无法以管理员身份运行,因此安装程序可能无法访问该映射驱动器。这通常会在某些虚拟机安排中发生,例如在并行VM中运行窗口。首先将安装程序复制到本地驱动器,就不会有问题。

答案 9 :(得分:0)

在cmd.exe中尝试输入命令行后对我有用的方法 我发现它在system32中被命名为cmd1.exe。因此我复制了文件并将其重命名为cmd.exe并完成了安装

答案 10 :(得分:0)

打开环境变量,您可以在Windows 7上通过按桌面左下角的开始按钮,在搜索程序和文件栏中键入environment variables来执行此操作。并创建一个新的系统变量(在“系统变量”而不是“用户变量”部分)。

在变量名称中,输入ComSpec,然后在变量值中,输入C:\Windows\system32\cmd.exe

仅此而已。希望它能起作用! 替代修补程序:

如果您已经在“系统变量”部分获得了ComSpec变量,请删除其末尾的;,这应该可以解决。