Постепенно
Я установил 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
Понятия не имею, почему это сработало, но в основном это здесь, чтобы я мог ссылаться на него сам в будущем! Бросай вещи в стену, пока они не приклеятся!