итак, имеем поставленную постгрю, поднимаю под тестовую бд:
$ mkdir pgdata
$ initdb -E UNICODE -D pgdata
...
OK
$ vim pgdata/postgresql.conf
и выставляем:
port 12450
unix_socket_directory = '/home/serg/projects/pgdata/tmp'
$ pg_ctl -D pgdata -l pgdata/postgresql.log start
server started
$ createdb -p 12450 -E UNICODE mydb
createdb: could not connect to database postgres: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.12450"?
вопрос:
как объяснить createdb, чтобы она искала сокеты там, где прописано в postgresql.conf ?
createdb и так
createdb и так читает файл конфигурации, поэтому никаких -p указывать не надо. Кроме того, порт относится к TCP/IP, а не к сокетам, сокет - это файл.
а как она
а как она узнает какой файл конфигурации прочитать?
короч. решается это так:
$ createdb -p 12450 -h /home/serg/projects/pgdata/tmp -E UNICODE mydb
$ psql -p 12450 -h /home/serg/projects/pgdata/tmp mydb
Welcome to psql 8.3.6 (server 8.3.5), the PostgreSQL interactive terminal.
Type: \copyright for distribution terms
\h for help with SQL commands
\? for help with psql commands
\g or terminate with semicolon to execute query
\q to quit
mydb=#
все
> а как она
> а как она узнает какой файл конфигурации прочитать?
узнает
пути по умолчанию вкомпилены.
>> пути по
>> пути по умолчанию вкомпилены.
по-умолчанию вкомпилен путь ~serg/projects/pgdata/tmp/ ?
в /var/run/ доступ на запись для обычных смертных зарезан, а разводить помойку директорий на своей системе я не собираюсь
в общем, я привел решение "проблемы" -- нужно было просто внимательно прочитать createdb --help
Можно вообще
Можно вообще createdb не пользоваться, через pgsql и CREATE DATABASE создавать БД
...и возникает
...и возникает точно такая же проблема, но не с createdb, а с psql
У меня не
У меня не возникает никаких проблем. Наверное я что-то неправильно делаю?