2013-03-08 2 views
1

Я изменил порт моего сервера PostgreSQL, поэтому созданный сокет больше не называется «.s.PGSQL.5432».Rails PostgreSQL - Изменение имени/местоположения сокета

Есть ли способ обновить/заставить Rails/pg gem изменить имя сокета, которое он ищет? Я попытался удалить/переустановить pg gem в соответствии с рекомендациями, но он по-прежнему пытается найти сокет с именем .s.PGSQL.5432, а не .s.PGSQL.50000, который он должен и в соответствии с комментариями database.yml, строка конфигурации «socket» не применяется к PostgreSQL.

  • Я могу создать символическую ссылку, но я надеялся, что вокруг будет более элегантный способ.
+0

Что такое ** порт ** в базе данных.yml? –

ответ

1

Изменить порт в вашем database.yml

PostgreSQL поддерживает два типа соединений, как вы знаете: TCP/IP и домен Unix сокетов. Оба могут использовать хост и порт, но использовать их по-разному.

При работе с TCP/IP хост и порт имеют стандартные значения в отношении сетей, работающих под управлением TCP/IP.

При работе с сокетами домена Unix хост предоставляет каталог, а порт предоставляет числовую часть имени сокета. Пути должны быть абсолютными. То же самое должно сохраняться для любого libpq-соединения (в том числе через пг драгоценный камень), так считают это:

psql -h /tmp -p 5000 

Это дает сообщение об ошибке из:

$ psql -h /tmp -p 5000 
psql: could not connect to server: No such file or directory 
    Is the server running locally and accepting 
    connections on Unix domain socket "/tmp/.s.PGSQL.5000"? 

Аналогично:

$ psql -h /foo -p 50000 
psql: could not connect to server: No such file or directory 
    Is the server running locally and accepting 
    connections on Unix domain socket "/foo/.s.PGSQL.50000"?