Psql не является внутренней или внешней командой исполняемой программой или пакетным файлом
It seems like I have it set up, I have my database.yml using postgres, and I can connect the database with pgadmin III, but when I tried using the psql command to test what version, it says that is is not recognized? Any idea what I should be doing?
I'm using windows and using command prompt with Ruby on Rails. Using PostgreSQL 9.2 installed with the EnterpriseDB one-click installer.
@CraigRinger It was the enterprise version, with 9.2 per your answer below, but it seems like it still doesn't work when I added psql.exe in my path
4 Answers 4
Assuming you installed PostgreSQL on Windows with the PostgreSQL "One-click" installer packaged by EnterpriseDB, psql is not added to the PATH automatically. That's partly because adding it to the path could otherwise cause confusion when people have multiple versions of PostgreSQL installed.
You need to specify the full explicit path to psql , eg:
or add psql to the user PATH environment variable, see eg this guide.
Do I need to restart my command prompt? I have these in my path: C:\PostgresSQL\9.2\;C:\PostgresSQL\9.2\bin;C:\PostgresSQL\9.2\bin\psql.exe . I closed the prompt and opened it again but when I tried typing psql its still not recognized?
@andrewliu Only the middle one actually makes sense; you don't set the path directly to the executable, nor to some arbitrary parent directory, the path must contain the immediate parent directory. You should generally modify the user path not the system path; if no PATH variable exists for the user then add one. To verify that it's correct close and reopen cmd.exe and then type echo "%PATH%" . Edit your question to add the result (copy and paste it).
@andrewliu Did you install PostgreSQL to C:\PostgreSQL ? That's an unusual and non-default install location. Are you sure it isn't in Program Files like usual.
@andrewliu No, your PATH must be to the folder containing psql.exe , not to psql.exe its self. What if you run the command with absolute path, eg (assuming your install has PostgreSQL mis-spelled as PostgresSQL like your comments) "C:\PostgresSQL\9.2\bin\psql.exe" . The quotes are required. Have you actually checked the path? Is there a 9.2 intermediate path in your install?
Что касается Postgres, я продолжаю получать эту ошибку несколько раз, хотя я уже установил местоположение папки bin в переменной пути в Windows 8. Что-то еще мне не хватает?
(Я не могу публиковать фотографии, так как у меня недостаточно репутации)
Просто обновление, потому что я пробовал его в Windows 10, вам нужно указать следующий путь: ;C:\Program Files\PostgreSQL\9.5\bin ;C:\Program Files\PostgreSQL\9.5\lib
Вы можете сделать это либо через CMD, используя set PATH [the path] или из моего
компьютер => свойства => расширенные настройки системы => переменные среды => системные переменные
Затем ищите путь.
Важно: не заменяйте уже имеющиеся ПУТЬ, просто добавьте один рядом с ними следующим образом ;C:\Program Files\PostgreSQL\9.5\bin ;C:\Program Files\PostgreSQL\9.5\lib
Обратите внимание : в Windows 10, если вы выполните следующее: компьютер => свойства => дополнительные системные настройки => переменные среды => системные переменные> выберите ПУТЬ, вы фактически получите возможность добавить новую строку. Нажмите Edit, добавьте расположение папок / bin и / lib и сохраните изменения.
Затем закройте командную строку, если она открыта, а затем запустите ее снова. попробуйте psql --version Если он дает вам ответ, то все в порядке, если нет, попробуйте echo %PATH% и посмотрите, был ли добавлен заданный вами путь или нет, и правильно ли он добавлен.
Всегда лучше установить предыдущую версию или при установке убедитесь, что вы указали '/ data' в отдельной папке каталога «C: \ data»
Простое решение, которое не упоминалось в этом вопросе: перезагрузите компьютер после объявления переменной пути.
Мне всегда приходится перезагружать - путь никогда не обновляется, пока я не сделаю это. И когда я перезапускаю, путь всегда обновляется.
Найдите свой двоичный файл, в котором он сохранен. получить путь в конечной шахте
Затем найдите свой локальный путь к данным пользователя, он в основном
Теперь все, что нам нужно, это ввести следующую команду в пути двоичного терминала:
Введите этот путь в системную переменную среды .
В этом случае я использую версию 10. Если вы проверите папку postgres, вы увидите свои текущие версии.
В моем случае я использовал следующие строки в отдельных строках:
Даже если уже немного поздно, я решил проблему PATH, удалив все пробелы.
У меня работает сейчас.
Убедитесь, что путь действительно ведет к исполняемым файлам. Я использую версию 11, и она не работала, пока она не была указана в качестве пути:
Возможно, так устроена версия 11, или я как-то испортил установку, но с тех пор у меня не было проблем.
Если вы попробовали все ответы, но голова все еще кружится, не забудьте сменить версию на ту, которую вы скачали.
Например, не копируйте просто
Я кружил головой. Надеюсь это поможет.
У меня была ваша проблема, и она снова заработала (в Windows 7).
Моя установка сначала действительно работала. Я установил postgres, а затем настроил системные переменные PATH с помощью >. Ключевое слово psql в командной строке не дало ошибок.
Я удалил указанные выше переменные PATH по одной, чтобы проверить, действительно ли они нужны. Psql продолжал работать после того, как я удалил путь к lib, но перестал работать после того, как я удалил путь к bin. Когда я вернул bin, он все еще не работал, то же самое и с lib. Я закрыл и снова открыл командную строку между попытками и проверил путь. Проблема сохранялась, хотя путь был идентичен тому, каким он был при работе. Я его перепрошил.
Я удалил и переустановил postgres. Проблема не исчезла. Это, наконец, сработало после того, как я удалил пробелы между "; C: . " в путях и повторно сохранил.
Не уверен, действительно ли виноваты были пробелы. Возможно, переменные среды просто нужно было изменить и обновить после установки.
Я также все еще не уверен, нужны ли пути как lib, так и bin, поскольку, похоже, для старых конфигураций пути существует какая-то устаревшая память. Однако я не хочу проверять это снова.
Возможно, ваш сервер не запускается автоматически в Windows 10, и вам нужно запустить его самостоятельно после установки пути Postgresql, используя следующую команду в cmd:
Вы должны находиться в каталоге «C: \ Program Files \ PostgreSQL \ 11.4 \ bin», чтобы выполнить указанную выше команду.
Для работы с psql вам все еще нужно находиться в каталоге bin
For Postgres, I keep getting this error multiple times even though I have already set the location of the bin folder to the path variable in Windows 8. Is there something else I'm missing?
(I can't post pictures since I don't have enough reputation)
Please post the output of set path on the command line (and no you don't have to be able to post a picture. Copy the text from the commandline, edit your question and paste the output)
so this is the output: set path "C:\Program Files\Postgres.app\Contents\Versions\9.4\bin" @a_horse_with_no_name
@mike.k I ran it but it didn't show the address I set it to. then again I don't know if it set it to the user or the system path variable
I am facing the same issue. Checked PATH variable and bin and lib paths are properly set. Not sure why psql --version is not working.
11 Answers 11
Just an update because I was trying it on Windows 10 you do need to set the path to the following: ;C:\Program Files\PostgreSQL\9.5\bin ;C:\Program Files\PostgreSQL\9.5\lib
You can do that either through the CMD by using set PATH [the path] or from my
computer => properties => advanced system settings=> Environment Variables => System Variables
Then search for path.
Important: don't replace the PATHs that are already there just add one beside them as follows ;C:\Program Files\PostgreSQL\9.5\bin ;C:\Program Files\PostgreSQL\9.5\lib
Please note: On windows 10, if you follow this: computer => properties => advanced system settings=> Environment Variables => System Variables> select PATH, you actually get the option to add new row. Click Edit, add the /bin and /lib folder locations and save changes.
Then close your command prompt if it's open and then start it again try psql --version If it gives you an answer then you are good to go if not try echo %PATH% and see if the path you set was added or not and if it's added is it added correctly or not.
Important note:
Replace 9.5 with your current version number. As of 2021, that is 13. For 2022 is 14.
Make sure every user update 9.5 with their current version of psql which is installed mine psql version is 12 so final url will look like this C:\Program Files\PostgreSQL\12\bin ;C:\Program Files\PostgreSQL\12\lib
It could be that your server doesn't start automatically on windows 10 and you need to start it yourself after setting your Postgresql path using the following command in cmd:
You need to be inside "C:\Program Files\PostgreSQL\11.4\bin" directory to execute the above command.
You still need to be inside the bin directory to work with psql
Enter this path in your System environment variable.
In this case i'm using version 10. If you check the postgres folder you are going to see your current versions.
In my own case i used the following on separate lines:
I had your issue and got it working again (on windows 7).
My setup had actually worked at first. I installed postgres and then set up the system PATH variables with C:\Program Files\PostgreSQL\9.6\bin; C:\Program Files\PostgreSQL\9.6\lib . The psql keyword in the command line gave no errors.
I deleted the PATH variables above one at a time to test if they were both really needed. Psql continued to work after I deleted the lib path, but stopped working after I deleted the bin path. When I returned bin, it still didn't work, and the same with lib. I closed and reopened the command line between tries, and checked the path. The problem lingered even though the path was identical to how it had been when working. I re-pasted it.
I uninstalled and reinstalled postgres. The problem lingered. It finally worked after I deleted the spaces between the "; C. " in the paths and re-saved.
Not sure if it was really the spaces that were the culprit. Maybe the environment variables just needed to be altered and refreshed after the install.
I'm also still not sure if both lib and bin paths are needed since there seems to be some kind of lingering memory for old path configurations. I don't want to test it again though.
Всем примет.
Windows 10.
Установлен Ruby on rails.
Я устанавливаю PostgreSQl , потом в консоли после команды psql возникает ошибка
"psql" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
Что не так ? Может неправильно установил ?
переменную среды сделал вот такую
C:\Program Files\PostgreSQL\11\bin
- Вопрос задан более двух лет назад
- 321 просмотр
Простой 15 комментариев
щас попробую переустановить
Константин Цветков, не понял Ваш комментарий. Это вопрос или утверждение ? Что значит "Свойства системы", "Переменные среды" изменить. Изменить как ? на что изменить ?
Константин Цветков, так вот же я прислал скрин , вот еще раз высылаю
всё там на месте C:\Program Files\PostgreSQL\11\bin указано в path
и в проводнике C:\Program Files\PostgreSQL\11\bin в этой папке находится файл psql.exe
Михаил, Чудес не бывает. Вы изменили Path для пользователя user , консоль вызываете от другого пользователя. Измените общий Path .
я и для user прописывал, и в общих тоже прописывал , и так и так пробовал. Одинаково. В консоли пишу от user. Я переустановил Postgre, была версия 11, я поставил версию 10, так же прописал переменную. Общую. Теперь при вызове команды psql пишет
Пароль:
psql: ВАЖНО: пользователь "user" не прошёл проверку подлинности (по паролю)
хотя я пароль точно ввожу тот, который вводил при установке. Я его записал. И ввожу в командной строке. Но почему-то пишет что не прошёл пароль
сейчас поменял пароль от user на 11111 , потом тут же ввожу этот же пароль 11111 и пишет , не прошёл
PS C:\WINDOWS\system32> net user user 11111
Команда выполнена успешно.
PS C:\WINDOWS\system32> psql
Пароль:
psql: ВАЖНО: пользователь "user" не прошёл проверку подлинности (по паролю)
Стоит сервер MySQL, в папке C:\Program Files\MySQL\MySQL Server 5.6\bin находятся его утилиты. Что и где надо прописать, чтобы в cmd.exe я мог просто написать имя любого из exe в вышеуказанной папке и чтоб консоль обращалась к файлам именно в ней, а не в текущей?
Например чтобы входить в консоль MySQL через Win+R -> cmd -> mysql -uroot -ppassword
Таки добавил в PATH. SET отображает:
mysql=C:\Program Files\MySQL\MySQL Server 5.6\bin\mysql.exe
Но всё равно командная строка пишет:
C:\Users\Администратор>mysql
"mysql" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
Помогли наконец разобраться. Path - это переменная, и в неё надо прописывать пути, т. е. каталоги, в которых будут искаться исполняемые файлы.
Надо было зайти в переменные среды и добавить в переменную Path через точку с запятой: C:\Program Files\MySQL\MySQL Server 5.6\bin\
Свойства компьютера
Advanced
Environment variables
Ищете в системных переменных PATH и добавляете туда нужные пути, разделяя их точкой с запятой.
Порядок важен для двух моментов - и скорость поиска незначительно повысится, и если в двух разных каталогах будет один и тот же exe файл, выполнится тот, который стоит в PATH раньше.
Посторонним В.: Вывод, задание и удаление переменных среды cmd.exe.
переменная Имя переменной среды.
строка Строка символов, присваиваемая указанной переменной.
Введите SET без параметров для вывода текущих переменных среды.
Изменение команды SET при включении расширенной обработки команд:
Если при вызове указать только имя переменной без знака равенства и значения,
команда SET выведет значения всех переменных, имя которых начинается
с указанной строки. Например:
Эта команда выведет значения всех переменных, имена которых начинаются с 'P'.
Если имя переменной не найдено в текущей среде, при возврате команда SET
установит значение ошибки ERRORLEVEL 1.
Команда SET не допускает использование знака равенства в имени
oia: я спросил "что и где прописать?" Пишу SET mysql="C:\Program Files\MySQL\MySQL Server 5.6\bin\mysql.exe" - ноль реакции, и даже в списке переменных не появляется.
Таки добавил. Отображается:
mysql=C:\Program Files\MySQL\MySQL Server 5.6\bin\mysql.exe
Но всё равно пишет:
C:\Users\Администратор>mysql
"mysql" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
Читайте также: