Этот вопрос довольно часто возникает у пользователей windows, поэтому мы решили поделиться тем, как мы обычно это делаем. Вопрос заключается в том, можете ли вы запустить сервер PostgreSQL на вашем компьютере c windows без необходимости установки чего-либо? Ответ - да, и довольно легко. Зачем вам это нужно? Есть несколько случаев: один из них - вы разрабатываете приложение для одного пользователя и вы хотите, чтобы пользователи могли запускать его из любого места без предварительной установки. Другая распространенная причина - вам запрещено устанавливать что-либо на компьютер пользователя, а вы хотите упаковать уже созданную базу данных.
Многие наши разработчики разрабатывают на портативном WAMP, и для некоторых наших приложений они должны работать как с MySQL, так и с PostgreSQL, поэтому нам нужен простой способ во время разработки поменять одно на другое.
Итак что нужно сделать:
- Для начала необходимы бинарные файлы сервера для Windows. Можете скопировать папку PostgreSQL (минус папка data) из существующей установки сервера, или просто скачать файлы из раздела сайта PostgreSQL Windows. Убедитесь в том, что выбран .zip архив.
- Далее скопируйте приведенный ниже пакетный файл в корень новой папки PostgreSQL
- При первом использовании, раcкомментируйте строчку c вызовом initdb.
- Запустите пакетный файл.
Ниже приведен скрипт, который запускает сервер PostgreSQL, ждет нажатия любой клавиши и завершает работу службы. Мы выбрали для запуска нестандартный порт (5439, чтобы мы знали, что это сервер 9.0). Чтобы инициализировать базу данных в первый раз, вам нужно запустить строку initdb. Ее нужно запустить только один раз. После этого вы можете переносить сервер на USB-устройство, если хотите, и запускать его по своему усмотрению. Предполагается, что скрипт находится в корне вашего каталога PostgreSQL. %CD% возвращает путь к папке текущего каталога, а %~dp0 - путь к папке скрипта.
@ECHO ON REM The script sets environment variables helpful for PostgreSQL
@SET PATH="%~dp0\bin";%PATH%
@SET PGDATA=%~dp0\data
@SET PGDATABASE=postgres
@SET PGUSER=postgres
@SET PGPORT=5439
@SET PGLOCALEDIR=%~dp0\share\locale
REM "%~dp0\bin\initdb" -U postgres -A trust
"%~dp0\bin\pg_ctl" -D "%~dp0/data" -l logfile start
ECHO "Click enter to stop"
pause
"%~dp0\bin\pg_ctl" -D "%~dp0/data" stop
- Войдите или зарегистрируйтесь, чтобы оставлять комментарии