Проблемы с установкой 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 - это общее сообщение об ошибке при любой ошибке установки.
Выявление проблемы
- Перейдите по указанному ниже пути c:\Users\XXXXXX\AppData\Local\Temp
- Откройте файл bitrock_installer_XXXX.log
- Проверьте, если вы получаете ниже ошибки:
Сценарий 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
Решение:
- Откройте командную строку в режиме администратора
Выполните следующую команду, чтобы изменить формат на основе вашего диска или всех дисков
Примеры команд:
fsutil 8dot3name set 1" - disable 8dot3 name creation on all volumes fsutil 8dot3name set C: 1" - disable 8dot3 name creation on c:
Выполните установку как пользователь с правами администратора
- После установки рассмотрите возможность сброса настройки 8dot3name на default (2), чтобы избежать непредвиденных последствий.
Надеюсь, это решит проблему!
Очень легко исправить:
Просто откройте "Дополнительные параметры системы" на панели управления и создайте новую системную переменную (в
System Variable
вместоUser Variable
раздел).В имени переменной введите
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 и добавьте этот путь в качестве значения. И вы готовы идти.