Проблемы с установкой PostgreSQL 9.2

Я пытался установить 64-битную версию PostgreSQL 9.2 для Windows на мою машину (Windows 7 64-битная) и получить эту ошибку:

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, в нижней части появляется сообщение об ошибке, и оно не будет подключаться после ввода пароля.

Как я могу подключиться к этому серверу?

12 ответов

ComSpec - это общее сообщение об ошибке при любой ошибке установки.

Выявление проблемы

  1. Перейдите по указанному ниже пути c:\Users\XXXXXX\AppData\Local\Temp
  2. Откройте файл bitrock_installer_XXXX.log
  3. Проверьте, если вы получаете ниже ошибки:

Сценарий stderr: "C:\Users\XXXXX\AppData\Local\Temp\POSTGR~1\TEMP_C~1.BAT" "не распознается как внутренняя или внешняя команда, работающая программа или пакетный файл.

Ошибка запуска

C:\Users\XXXXX\AppData\Local\Temp/postgresql_installer_47b21c4ea1/temp_check_comspec.bat:
"C:\Users\XXXXX\AppData\Local\Temp\POSTGR~1\TEMP_C~1.BAT" "не распознается как внутренняя или внешняя команда,

работоспособная программа или командный файл.

Это проблема с ' 8.3 именами файлов и каталогами' (например, '\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 на default (2), чтобы избежать непредвиденных последствий.

Надеюсь, это решит проблему!

Очень легко исправить:

  1. Просто откройте "Дополнительные параметры системы" на панели управления и создайте новую системную переменную (в System Variable вместо User Variable раздел).

  2. В имени переменной введите ComSpec а затем в значение переменной введите C:\Windows\system32\cmd.exe,

Альтернативное исправление:

Если у вас уже есть ComSpec переменную в разделе Системная переменная, удалите ;в конце это должно это исправить.

Это не COMPSPEC это просто COMSPEC, Пожалуйста, покажите результат:

echo %COMSPEC%

Обратите внимание, что COMSPEC может быть установлено что-то другое в учетной записи администратора, с которой вы запускаете программу установки. Я не уверен, как это выяснить, но это может появиться в журнале установки PostgreSQL, поэтому, пожалуйста, загрузите это и дайте ссылку на него в своем посте. См. Сообщение об ошибке установки для получения информации о том, где взять журнал установщика.

См. Статью FAQ по PostgreSQL для Windows. Проверьте COMSPEC переменная окружения.

Вот отчет, который я сделал, предлагая, чтобы установщик проверил это явно, и вот мой пост в блоге на эту тему.

Я получил ту же проблему, и я нашел в журнале:

Сценарий 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. И решил мою проблему.

В моем случае установщик находился в папке%USERPROFILE%\DownloadsP{папка загрузки Windows}, я переместил установщик на рабочий стол и снова запустился. странно это сработало лол.

Откройте переменные среды, вы можете сделать это в Windows 7, набрав environment variablesна панели поиска программ и файлов при нажатии кнопки запуска в левом нижнем углу рабочего стола. И создайте новую системную переменную (в разделе "Системная переменная" вместо "Пользовательская переменная").

В имени переменной введите ComSpec а затем в значение переменной введите C:\Windows\system32\cmd.exe.

Это все. Надеюсь, что это работает! Альтернативное исправление:

Если у вас уже есть ComSpec переменной в разделе Системная переменная удалите ; в конце это должно исправить это.

Если exe-файл установщика находится в сетевой папке, этот подключенный диск может быть фактически недоступен для установщика, так как он работает от имени администратора. Это может часто происходить в некоторых виртуальных машинах, таких как запуск окон в виртуальной машине Parallels. Сначала скопируйте установщик на локальный диск, и у вас не возникнет проблем.

У меня была похожая проблема. После установки папка данных не содержала файл postgres.conf. Он содержал только одну папку с именем "pg_log". Я описал решение, которое я использовал здесь: Ошибка установки Postgres при чтении файла postgresql.conf

По сути, было бы полезно проверить, есть ли у пользователя полные разрешения для папки postgres, и снова запустить команды "init_db" и "pg_ctl start". Если путь содержит пробел, попробуйте использовать относительный путь для аргумента папки данных pg_ctl.

Что сработало для меня после попытки ввести командную строку, заданную ей в cmd.exe, я обнаружил, что он был назван cmd1.exe в system32.. поэтому я скопировал файл и переименовал его в cmd.exe, и установка завершилась

Я использую 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"

Просто запустите его от имени администратора и измените системную переменную среды, например, создайте новую переменную "ComSpec" и тип значения "C:\Windows\system32\cmd.exe".

Сначала найдите путь к cmd.exe(чаще всего это C:\Windows\System32\cmd.exe). Перейдите к переменной среды и добавьте этот путь к пути к системной переменной. А также создайте новую переменную в пользовательской переменной с именем ComSpec и добавьте этот путь в качестве значения. И вы готовы идти.

Другие вопросы по тегам