Постепенно

Я установил Postgresql 9.4.0, установленный на моем Mac (10.10.1/Yosemite), используя homebrew. Это не работает.

Я создал softlink для /usr/local/opt/postgresql/homebrew.mxcl.postgresql.plist в ~/Library/LaunchAgents.

Если я пытаюсь вручную загрузить postgres, я получаю сообщение о том, что "Операция выполняется"

> launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
/usr/local/Cellar/postgresql/9.4.0/homebrew.mxcl.postgresql.plist: Operation already in progress

Однако postgres не работает.

> ps auxw | grep post
billmcn           670   0.0  0.0  2424272    452 s000  R+   10:12PM   0:00.01 grep post

и я не могу соединиться с клиентом командной строки.

> psql
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.5432"?

Насколько я знаю, я пробовал все исправления, предложенные в других qaru.site/info/12776/... темы, обсуждающие эту проблему, В частности:

  • Я удалил и переустановил postgres и сопроводительный камень Ruby. На моей машине нет версии postgres 8.0.
  • Я подтвердил, что клиентская программа psql - это версия 9.4.0, установленная Homebrew, а не двоичная система Mac.
  • Я проверил, что /usr/local/var/postgres/postmaster.pid не существует.
  • Я перезагрузил машину.

Раньше у меня были начальные публикации для начинающих на этой машине. Я думаю, что это сломало, это обновление с версии 8 до версии 9, но я не уверен.

У меня нет никаких баз данных, которые мне нужно сохранить. Я готов начать чистку с помощью postgres; Мне просто нужно заставить его работать сейчас. Любые идеи?


Возможно, проблема связана с правами на каталог /usr/local/var/postgres. Вот как выглядел мой каталог var, когда что-то не работало.

ll /usr/local/var/
drwxr-xr-x  3 billmcn  admin  102 Dec 20 12:44 cache
drwxr--r--  2 root     admin   68 Dec 29 21:37 postgres

(whoami = "billmcn" )

Я удалил /usr/local/var/postgres, удалил и переустановил postgres, и теперь он выглядит так.

ll /usr/local/var/
drwxr-xr-x   3 billmcn  admin  102 Dec 20 12:44 cache
drwx------  23 billmcn  admin  782 Dec 30 10:51 postgres

Не уверен, как он попал в это состояние, потому что я не помню, как я работал с правами на этот каталог, но неважно. Теперь он работает.

Ответ 1

У меня была такая же проблема с установкой postgres с использованием homebrew на недавно установленном Yosemite.

Сначала мой конфигуратор brew выглядит следующим образом:

HOMEBREW_VERSION: 0.9.5
ORIGIN: https://github.com/Homebrew/homebrew
HEAD: 9f6926265f8e4be7cc80dfe9042f2cd3c1e8dc9e
Last commit: 64 minutes ago
HOMEBREW_PREFIX: /usr/local
HOMEBREW_CELLAR: /usr/local/Cellar
CPU: quad-core 64-bit sandybridge
OS X: 10.10.1-x86_64
Xcode: 6.1.1
Clang: 6.0 build 600
X11: N/A
System Ruby: 2.0.0-481
Perl: /usr/bin/perl
Python: /usr/bin/python
Ruby: ~/.rvm/rubies/ruby-2.1.1/bin/ruby

Первое, что я заметил, это то, что у меня не было права на запись на /usr/local/var/postgres. Это было легко изменить, выпустив sudo chown -R `whoami` /usr/local/var/postgres, после чего я переустановил postgresql и сделал

cat /usr/local/var/postgres/server.log

который показал:

postgres cannot access the server configuration file "/usr/local/var/postgres/postgresql.conf": No such file or directory

Итак, я удалил каталог /usr/local/var/postgres и выпустил команду для инициализации базы данных.

initdb -D /usr/local/var/postgres/

Казалось, что этот трюк и постгрес работает нормально.

Ответ 2

У меня была такая же проблема. Основная проблема здесь заключается в том, что шаг initdb установки создаст каталог с правами root, а не как пользователь на Mac. Чтобы решить эту проблему:

Создайте каталог данных перед запуском initdb и установите разрешения 0700

rm -rf /usr/local/var/postgres  # in case this is not your first try
mkdir /usr/local/var/postgres
chmod 0700 /usr/local/var/postgres

Затем запустите initdb и он будет уважать разрешения каталога данных.

initdb -D /usr/local/var/postgres

Для усмешек и хихиканья создайте тестовый db, названный так после вашего пользователя:

createdb `whoami`

Войдите, чтобы проверить:

psql

Ответ 3

После попытки установить postgresql с помощью Homebrew, я получил следующее:

Warning: postgresql-9.5.2 already installed, it just not linked

Итак, я попробовал:

brew link postgresql

И получил эту ошибку:

Linking /usr/local/Cellar/postgresql/9.5.2... 
Error: Could not symlink share/man/man3/SPI_connect.3
/usr/local/share/man/man3 is not writable.

Казалось, что это вопрос разрешения записи, поэтому я сделал:

sudo chown -R `whoami` /usr/local/share/man/

Он сделал трюк, потому что, тогда я смог (без ошибок):

brew link postgresql

Ответ 4

Имейте в виду, что это тема для Gibub Homebrew, посвященная этой проблеме: https://github.com/Homebrew/homebrew/issues/35240


У меня была аналогичная проблема. Ответ Джеймса помог мне решить эту проблему. Но затем я столкнулся с проблемой, о которой упоминал jbk (после удаления /usr/local/var/postgres, он продолжал воссоздаваться).

Проблема в том, что если вы создали символическую ссылку:

ln -sfv /usr/local/opt/postgresql/*.plist ~/Library/LaunchAgents

и запустил процесс:

launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

вы должны сначала выгрузить его:

launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

перед запуском команд Джеймса.

rm -rf /usr/local/var/postgres  # in case this is not your first try
mkdir /usr/local/var/postgres
chmod 0700 /usr/local/var/postgres

Кроме того, если, как и я, у вас есть администратор, управляющий доморощенным и обычный пользователь, который будет использовать pgsl для целей разработки, команда James должна запускаться как суперпользователь:

sudo -s

и владение над каталогом postgres должно быть предоставлено вашему пользователю dev:

chown my-dev-user /usr/local/var/postgres

Следующая команда, запускаемая как пользователь dev, должна затем правильно заполнить каталог:

createdb 'whoami'

Бег:

psql -l

должен показать вам таблицы и разрешения пользователей в postgre после таких манипуляций.

Надеюсь это поможет.

Ответ 5

Если кто-то обновил предыдущую версию, не забудьте:

brew postgresql-upgrade-database

Это решит проблему путем обновления существующих баз данных до версии, до которой вы обновили postgres.

Ответ 6

Проверить @leo_chaz_maltrait на ошибку при исправлении ошибки Could not symlink share/man/man3/SPI_connect.3 Еще одна ошибка, которая может появиться:

Error: Could not symlink lib/pkgconfig/libecpg.pc

sudo chown -R `whoami` /usr/local/lib/pkgconfig

brew link postgresql

Ответ 7

Для потомков у меня была эта проблема, и я хотел отметить, что сработало для меня.

Я использую Postgres 11.2 на High Sierra. Недавно я обновил postgres 10 с помощью brew postgresql-upgrade-database.

Я продолжал получать сообщение об ошибке psql: could not connect to server: No such file or directory, и в моем файле server.log указано, is another postmaster (PID 5894) running in data directory "/usr/local/var/postgres"?

Я пробовал несколько решений, включая перезагрузку компьютера, удаление postmaster.pid, использование brew services restart postgres, но безрезультатно. В конце концов я наткнулся на решение:

brew unlink postgresql && brew link postgresql

Понятия не имею, почему это сработало, но в основном это здесь, чтобы я мог ссылаться на него сам в будущем! Бросай вещи в стену, пока они не приклеятся!