573

在我做brew updateand之后brew upgrade,我的 postgres 出现了一些问题。我尝试卸载 postgres 并重新安装,但效果不佳。

这是错误信息。(当我尝试这样做时,我也收到了此错误消息rake db:migrate

$ 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"?

我该如何解决?

Mac版:山狮。

自制版本:0.9.3

postgres 版本:psql (PostgreSQL) 9.2.1

这就是我所做的:

$ brew uninstall postgresql
Uninstalling /usr/local/Cellar/postgresql/9.2.1...
$ brew uninstall postgresql
Uninstalling /usr/local/Cellar/postgresql/9.1.4...
$ psql --version
bash: /usr/local/bin/psql: No such file or directory
$ brew install postgresql
==> Downloading http://ftp.postgresql.org/pub/source/v9.2.1/postgresql-9.2.1.tar.bz2
Already downloaded: /Library/Caches/Homebrew/postgresql-9.2.1.tar.bz2
......
......
==> Summary
/usr/local/Cellar/postgresql/9.2.1: 2814 files, 38M, built in 2.7 minutes
$ initdb /usr/local/var/postgres -E utf8
The files belonging to this database system will be owned by user "laigary".
This user must also own the server process.

The database cluster will be initialized with locale "en_US.UTF-8".
The default text search configuration will be set to "english".

initdb: directory "/usr/local/var/postgres" exists but is not empty
If you want to create a new database system, either remove or empty
the directory "/usr/local/var/postgres" or run initdb
with an argument other than "/usr/local/var/postgres".
$ mkdir -p ~/Library/LaunchAgents
$ cp /usr/local/Cellar/postgresql/9.2.1/homebrew.mxcl.postgresql.plist ~/Library/LaunchAgents/
$ launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
homebrew.mxcl.postgresql: Already loaded
$ pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start
server starting
$ env ARCHFLAGS="-arch x86_64" gem install pg
Building native extensions.  This could take a while...
Successfully installed pg-0.14.1
1 gem installed
$ psql --version
psql (PostgreSQL) 9.2.1
$ 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"?

现在,在我重新安装自制软件后,当我使用 时$ psql,它不会显示任何错误消息。

但我rake db:migrate在我的 Rails 应用程序中运行,它显示:

could not connect to server: No such file or directory
    Is the server running locally and accepting
    connections on Unix domain socket "/var/pgsql_socket/.s.PGSQL.5432"?

/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/postgresql_adapter.rb:1213:in `initialize'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/postgresql_adapter.rb:1213:in `new'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/postgresql_adapter.rb:1213:in `connect'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/postgresql_adapter.rb:329:in `initialize'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/postgresql_adapter.rb:28:in `new'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/postgresql_adapter.rb:28:in `postgresql_connection'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:309:in `new_connection'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:319:in `checkout_new_connection'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:241:in `block (2 levels) in checkout'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:236:in `loop'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:236:in `block in checkout'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:233:in `checkout'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:96:in `block in connection'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:95:in `connection'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:404:in `retrieve_connection'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/abstract/connection_specification.rb:170:in `retrieve_connection'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/abstract/connection_specification.rb:144:in `connection'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/railties/databases.rake:107:in `rescue in create_database'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/railties/databases.rake:51:in `create_database'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/railties/databases.rake:40:in `block (3 levels) in <top (required)>'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/railties/databases.rake:40:in `each'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/railties/databases.rake:40:in `block (2 levels) in <top (required)>'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/task.rb:205:in `call'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/task.rb:205:in `block in execute'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/task.rb:200:in `each'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/task.rb:200:in `execute'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/task.rb:158:in `block in invoke_with_call_chain'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/task.rb:151:in `invoke_with_call_chain'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/task.rb:144:in `invoke'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/application.rb:116:in `invoke_task'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/application.rb:94:in `block (2 levels) in top_level'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/application.rb:94:in `each'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/application.rb:94:in `block in top_level'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/application.rb:133:in `standard_exception_handling'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/application.rb:88:in `top_level'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/application.rb:66:in `block in run'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/application.rb:133:in `standard_exception_handling'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/application.rb:63:in `run'
/usr/local/bin/rake:32:in `<main>'
Couldn't create database for {"adapter"=>"postgresql", "encoding"=>"unicode", "database"=>"riy_development", "pool"=>5, "username"=>nil, "password"=>nil}

最后我找到了解决方案。

sudo mkdir /var/pgsql_socket/
sudo ln -s /private/tmp/.s.PGSQL.5432 /var/pgsql_socket/

这个解决方案有点棘手,但它确实有效。希望有人有更好的解决方案

更新

这也适用于我。

rm /usr/local/var/postgres/postmaster.pid
4

59 回答 59

1118

有类似的问题;pid 文件阻止 postgres 启动。要解决这个问题:

$ rm /usr/local/var/postgres/postmaster.pid
$ brew services restart postgresql

然后一切都很好。


更新:

对于Apple M1 (Big Sur) 用户,请改为:

$ rm /opt/homebrew/var/postgres/postmaster.pid
$ brew services restart postgresql
于 2013-09-16T15:55:50.157 回答
337

当 brew 进行 postgres 升级时,有时会发生这种情况,导致数据文件与新服务器不兼容。

就我而言,它发生在从 9.3 升级到 9.4时。

OS X/自制软件:

尝试运行postgres -D /usr/local/var/postgres——如果 postgres 无法启动,它会给你一个更详细的输出。/usr/local/var/log/postgres.log或在(/opt/homebrew/var/log/postgres.logMac M1 上)打开日志文件并查找“致命:数据库文件与服务器不兼容”行

就我而言,运行rm -rf /usr/local/var/postgres && initdb /usr/local/var/postgres -E utf8删除了我的旧数据库,然后重新初始化了 postgres 数据库模式。(这将破坏您的数据)

感谢https://github.com/Homebrew/homebrew/issues/35240的解决方案。可以在此处找到彻底重新安装的完整说明:如何完全卸载和重新安装 Homebrew Postgres - Test Double Blog(同样,如果您在 M1 Mac 上,则在它所说的任何地方替换/opt/homebrew/var路径/ usr/local/var )

重新生成我的数据库(使用rake db:create)后一切正常。

最后,评论中的链接指向保留数据的可能解决方案,但我没有尝试过:如何将 PostgreSQL 从版本 9.6 升级到版本 10.1 而不会丢失数据 - Thinbug

于 2015-01-13T15:16:01.987 回答
87

在这里找到了对我有用的解决方案:

https://dba.stackexchange.com/questions/75214/psql-could-not-connect-to-server-no-such-file-or-directory

您基本上运行以下命令来手动启动服务器:

pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start
于 2015-04-01T05:57:07.937 回答
60

如果使用 brew 安装和卸载 postgres 对您不起作用,请查看您的 postgresql 安装日志或:

postgres -D /usr/local/var/postgres

如果你看到这种输出:

LOG:  skipping missing configuration file "/usr/local/var/postgres/postgresql.auto.conf"
FATAL:  database files are incompatible with server
DETAIL:  The data directory was initialized by PostgreSQL version 9.4, which is not compatible with this version 9.6.1.

然后尝试以下操作:

rm -rf /usr/local/var/postgres && initdb /usr/local/var/postgres -E utf8

然后启动服务器:

pg_ctl -D /usr/local/var/postgres -l logfile start

资源

于 2017-02-09T03:17:45.427 回答
54

升级数据库对我有用

brew postgresql-upgrade-database

于 2018-01-23T19:17:56.270 回答
36

在 Yosemite 上,如果 pid 文件阻止 Postgres 启动并且您有一个launchctl守护程序尝试(并且失败)加载数据库守护程序,那么您需要卸载 plist 文件:

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

然后删除pid文件

$ rm /usr/local/var/postgres/postmaster.pid

然后重新加载launchctl守护进程

$ launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
于 2014-12-18T08:26:32.913 回答
32

对于阅读本文并使用 Postgres.app 的任何人,您可能需要host: localhost在 database.yml 中。http://postgresapp.com/documentation#toc_3

于 2013-06-14T06:54:48.957 回答
26
brew services start postgres 

为我工作!

于 2017-03-14T23:49:09.680 回答
18

该问题也可归因于导致 postmaster.pid 文件落后的崩溃进程。我这样做并工作:

$ brew services stop postgresql
$ rm /usr/local/var/postgres/postmaster.pid # adjust path accordingly to your install
$ brew services start postgresql
于 2018-10-18T14:55:57.237 回答
17

检查套接字文件是否存在。

$ ls -l /tmp/.s.PGSQL.5432
srwxrwxrwx  1 you  wheel  0 Nov 16 09:22 /tmp/.s.PGSQL.5432

如果没有,请检查您的 postgresql.conf 是否有 unix_socket_directory 更改。

$ grep unix_socket /usr/local/var/postgres/postgresql.conf
#unix_socket_directory = ''     # (change requires restart)
#unix_socket_group = ''         # (change requires restart)
#unix_socket_permissions = 0777     # begin with 0 to use octal notation
于 2012-11-16T14:44:24.947 回答
16

问题是因为 5432 端口上已经有一个正在运行的服务,我们无法通过这个端口建立 psql 套接字连接。

我删除了套接字文件

rm -rf /tmp/.s.PGSQL.5432/

然后我重新初始化了 postgres 服务

postgres -D /usr/local/var/postgres

这对我有用。

于 2018-05-19T20:59:26.980 回答
12

最简单的方法是这样做

brew reinstall postgresql

这将使您的用户权限等保持不变,一切都将重置为新的。一直有效!

于 2016-11-04T03:09:47.947 回答
8

这实际上是你应该做的:

你应该看看 /usr/local/var/postgres/postmaster.pid

然后查看文件的第一行 - 这是错误的 PID

ps aux | grep <PID>

例如:

ps aux | grep 12345

然后做

kill <PID>

例如

kill 12345

假设它仍在运行

https://superuser.com/questions/553045/fatal-lock-file-postmaster-pid-already-exists

不要听公认的答案,这是不好的,会破坏你的数据!!!

于 2017-05-06T02:15:28.187 回答
8

就我而言,问题是由 Mac OS 更新引起的。升级 PostgreSQL 解决了这个问题。

# upgrade database version solved the trouble
$ brew postgresql-upgrade-database

但是,这个错误很常见并且有多种可能的原因,你不应该完全依赖我上面的解决方案。

于 2020-10-29T05:25:30.130 回答
7

更改 postresql 或 database.yml 配置设置、更改 $PATH 或创建符号链接对我来说都是不必要的。我需要做的就是gem uninstall pg然后bundle(或gem install pg)。

问题是 pg gem 是在自制 postgres 之前安装的,所以从 MacOS 附带的 postgres 版本中获取设置。重新安装它(从而重建本机扩展)解决了这个问题。

于 2013-08-23T19:08:43.780 回答
7

对于 MacOS BigSur,自制 postgres:

  • rm /opt/homebrew/var/postgres/postmaster.pid
  • brew services restart postgresql
于 2021-05-28T14:17:25.083 回答
7

当我从 9.3.4 升级到 9.5 时,这发生在我身上,因为数据库在不升级的情况下不兼容。

我使用 pg_upgrade 如下:

停止 postgres

$ brew services stop postgresql

升级数据库:

$ pg_upgrade \
   -d /usr/local/var/postgres \
   -D /usr/local/var/postgres9.5 \
   -b /usr/local/Cellar/postgresql/9.3.4/bin/ \
   -B /usr/local/Cellar/postgresql/9.5.0/bin/ \
   -v

归档旧数据库:

 $ mv /usr/local/var/postgres /usr/local/var/postgres9.3.save
 $ mv /usr/local/var/postgres9.5 /usr/local/var/postgres

重启postgres:

 $ brew services start postgresql

更新的宝石(用于轨道/活动记录):

 $ gem uninstall pg
 $ gem uninstall activerecord-postgresql-adapter
 $ bundle install
于 2016-08-10T19:00:25.793 回答
6

这对我有用。我不必删除任何文件

brew postgresql-upgrade-database

于 2021-09-22T15:44:52.923 回答
5

Psql 选项

-h 主机名 --host=主机名

:指定运行服务器的机器的主机名。 如果该值以斜杠开头,则将其用作 Unix 域套接字的目录。

$ grep "port\|unix_socket" /etc/postgresql/9.1/main/postgresql.conf
port = 5433                                         # (change requires restart)
unix_socket_directory = '/var/run/postgresql'       # (change requires resta

$ netstat -nalp | grep postgres
unix  2      [ ACC ]     STREAM     LISTENING     106753   4349/postgres       /tmp/.s.PGSQL.5432
unix  2      [ ACC ]     STREAM     LISTENING     10377 1031/postgres       /var/run/postgresql/.s.PGSQL.5433

使用 -host 选项运行 psql

$ psql -p 5433 -h /var/run/postgresql

无需做软链接

于 2014-03-02T07:08:09.467 回答
5

这对我有用(作为以前答案的混合):

$ rm /usr/local/var/postgres/postmaster.pid

$ pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start

来源:https ://coderwall.com/p/zf-fww/postgres-on-osx-with-homebrew-not-running-after-osx-crash

于 2018-03-17T14:23:32.153 回答
5

如果 postgres 是使用 homebrew 安装的,你可以通过运行来解决这个问题:

brew link postgres
于 2017-03-14T23:19:42.667 回答
5

我遇到了同样的问题psql (PostgreSQL) 9.6.11

什么对我有用-

删除 postmaster.pid -- rm /usr/local/var/postgresql@9.6/postmaster.pid

重新启动 postgres --brew services restart postgresql@9.6

如果这也不起作用,请运行 - sudo chmod 700 /usr/local/var/postgresql@9.6

于 2019-04-12T06:52:21.727 回答
4

在 MacOS Sierra 上也遇到了这个问题,当我们如上所述运行 pg_ctl 时,我们遇到了以下错误pg_ctl: no database directory specified and environment variable PGDATA unset。所以我们按照这里的步骤解决了我们的问题,即:

mkdir ~/.postgres

initdb ~/.postgres

pg_ctl -D ~/.postgres start

于 2016-11-02T20:29:32.910 回答
4

如果你在不退出 psql 的情况下关闭系统,postgres 就不会删除一些文件。

我没有在 usr/local/var/postgres 位置找到文件 postmaster.pid

所以我做了以下事情:

brew 服务启动 postgresql

上面的命令应该让你启动 postgres

于 2019-07-12T11:26:07.557 回答
4

所以我在命令之后偶然发现了这个rails db:create。在 macOS Catalina 10.15.3 中设置环境。

我检查的第一件事是让我来到这里的流程。在确保所有事情进展顺利并且没有任何错误可能逃过我的脑海后,我尝试了这里最流行的解决方案,但似乎都没有奏效。

到目前为止,我看到的唯一错误是

$ 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"?

所以我需要一些关于正在发生的事情的更具体的信息。由于这个原因,我决定查看位于的 postgres 日志文件

/usr/local/var/log/postgres.log

所以打开日志后我看到了这个错误

LOG: starting PostgreSQL 12.2 on x86_64-apple-darwin19.3.0, compiled by Apple clang version 11.0.0 (clang-1100.0.33.17), 64-bit LOG: could not translate host name "localhost", service "5432" to address: nodename nor servname provided, or not known WARNING: could not create listen socket for "localhost" FATAL: could not create any TCP/IP sockets LOG: database system is shut down

因此,这更具解释性和具体性。问题在于 PostgreSQL 无法“看到”并解析 localhost 服务器。

所以接下来我要做的是检查 /etc/hosts 文件,其默认内容应如下所示:

##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting.  Do not change this entry.
##
127.0.0.1   localhost
255.255.255.255 broadcasthost
::1          localhost 

在将上述内容与我的进行比较后,我发现在我的这一行中有所不同并发表了评论(!)。

#::1             localhost

所以我删除了行前的#符号保存文件并重新运行

rails db:create 

并且数据库已成功启动。

于 2020-03-25T23:35:52.960 回答
4

我遇到了同样的问题,因为我在代码中使用了错误的 Postgres 用户名。我登录到 postgrespsql -d postgres并输入\du以获取角色名称并更正 Postgres 的用户名。

所以当你们遇到这个问题时,你们需要确保使用正确的 Postgres 用户名、密码、主机名和数据库......

希望这会帮助任何人

于 2017-10-16T04:39:27.647 回答
3

在其他进程正在访问它们时尝试恢复/删除/创建数据库后,我遇到了这个问题。MacOSX/Homebrew 修复是:

  1. 关闭所有其他访问进程rails server, rails console, guard, 等...
  2. 使用中的命令加载/卸载brew info postgres
  3. 从之前运行恢复/删除/创建
于 2014-01-24T18:17:09.313 回答
3

FWIW 今天发生在我身上,但发生的事情是我当时正在运行 Ubuntu 更新,这可能正在更新 Postgres。更新完成后,我可以顺利连接。

为了完整起见,我试图从 Rails 控制台从数据库中检索记录:

development (main):0 > a = MyModel.find 73694
PG::ConnectionBad: 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.5432"?
于 2015-02-10T14:54:00.263 回答
3

看起来你的 psql 没有运行。您应该在连接之前运行它。您只能使用适用于 Mac OS 的 Postgres.app 来做到这一点。(下载并安装此应用程序http://postgresapp.com)打开应用程序,您已准备好 PostgreSQL 服务器并等待新连接。关闭应用程序,服务器关闭。你也可以在这里找到这个信息http://www.postgresql.org/download/macosx/。希望这会帮助你。

于 2015-06-09T21:12:48.410 回答
3

¿ 您最近是否更改了 pg_hba.conf?如果您确实检查了以下任何错字:

“local”仅适用于 Unix 域套接字连接

本地所有所有密码

IPv4 本地连接:

host all all 127.0.0.1/32 密码

IPv6 本地连接:

host all all ::1/128 密码

有时一个简单的错误就会让我们头疼。我希望这能有所帮助,如果我的英语一点都不好,我很抱歉。

于 2017-10-28T16:09:42.730 回答
3

对于那些使用此命令但不起作用或文件不存在且正在使用 Ruby on Rails 的人

rm /usr/local/var/postgres/postmaster.pid

或任何其他命令,然后继续失败。

我用 Brew 解决了这个问题。我不得不用 brew 卸载 2 次,因为在第一次卸载时会保留另一个版本的 postgresql,第二次卸载过程将完成。

使用 Brew 安装 postgresql

然后删除、创建和迁移项目的数据库

(不要忘记启动 postgresql 服务器)

于 2017-02-08T16:07:56.100 回答
3

这是因为以前的服务器仍在运行,请尝试关闭所有内容并重新运行您的应用程序。

于 2016-10-01T09:22:36.213 回答
3

当 postgres 服务器未运行时会发生这种情况。在 MAC 上通过 Homebrew 正确安装 Postgres 的步骤:

  1. brew install postgres

  2. initdb /Users/<username>/db -E utf8 [这将初始化 postgres 以使用给定目录作为数据库目录。通常不建议使用用户目录进行数据库存储。编辑 sudoers 文件以添加 initdb 和类似命令,然后在 /usr/local/var/postgres 上运行 initdb]

  3. pg_ctl -D /Users/<username>/db -l logfile start [第 2 步成功后会提示运行第 3 步。此命令手动启动服务器。]

于 2018-01-04T06:57:34.463 回答
2

经过大量的来回后,它真的归结为pg我使用的 gem 版本。在小牛队上,pg版本0.15.1不会连接到端口 5432,但版本0.17.1工作得很好 - 很奇怪。

于 2014-11-23T19:29:14.893 回答
2

我得到了同样的错误。原来 postgres 根本没有运行(它通常总是在后台运行,但无论出于何种原因,它今天都没有运行)。

如果是这种情况,只需postgres在项目目录的命令行中输入

于 2014-05-10T22:13:53.480 回答
2

如果您使用的是M1 mac并且您使用M1 版本的 homebrew安装了 postgresql ,这应该可以工作:

$ rm /opt/homebrew/var/postgres/postmaster.pid
$ brew services restart postgresql
于 2021-08-29T18:59:13.363 回答
2

有同样的问题。升级数据库成功了! postgresql-upgrade-database

于 2020-09-15T03:00:15.947 回答
2

对我来说,这是导致问题的 apache 升级。我仍然可以在控制台中运行 psql 或直接从 kdevelop 调用 db。它还可以将“host = localhost”添加到连接字符串。

但真正的问题是 apache 已更改为私有 tmp。

解决方案:更新 /usr/lib/systemd/system/apache2.service 并将 PrivateTmp=true 更改为 PrivateTmp=false。

我正在开发 OpenSuse OS,但我猜类似的事情可能会发生在 Mac 上。

于 2016-10-11T07:32:32.560 回答
2

这对我有用: rm /usr/local/var/postgres/postmaster.pid

于 2021-07-30T14:27:49.633 回答
1

尝试

sudo systemctl start postgresql@12-main

这里我的 postgresql 版本是 12。

于 2020-04-21T12:50:42.820 回答
1

我只是重新启动了postgres:

brew services restart postgresql

没有必要删除postmaster.pid.

于 2021-01-23T20:58:01.717 回答
1

我发现在安装了 Postgres 9.6 的最新补丁后,我所有的可执行文件(postgrespsqlpg_dumppg_restore)都被删除了,我不得不重新链接它们。幸运的是 Homebrew 可以为你做到这一点:

brew link --force postgresql # (or in my case, `postgresql@9.6`)
于 2019-05-15T03:49:43.403 回答
1

我正在我的 MacBook M1 (Air) 上开发一个项目并打开了一些选项卡,突然我的 Postgres 服务器停止并开始出现以下错误:

psql:无法连接到服务器:连接失败服务器是否在本地运行并接受 Unix 域套接字“/tmp/.s.PGSQL.5432”上的连接

我尝试了许多解决方案,例如;

  1. 更新 brew 和 Postgres。
  2. 重新启动服务器。
  3. 试图从命令行终止该进程。

但可悲的是,没有什么对我有用。

最后,我想到了重新启动我的 mac 。令我惊讶的是,postgres 服务器开始像以前一样正常工作。我认为 Postgres 目录一定有问题。但我很高兴,它奏效了。

我建议您在重新启动之前先完成上述选项。

谢谢。

于 2021-03-15T05:00:39.977 回答
1

对于 Mac OS Catalina,这行得通

$ rm /usr/local/var/postgres/postmaster.pid
$ brew services restart postgresql
于 2021-10-26T15:48:41.147 回答
0

安装后只需两个步骤即可运行数据库(在此之前确保您以postgres用户身份登录)

安装目录/bin/postmaster -D 安装目录/pgsql/data

例如:

[postgres@localhost bin]$ /usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/data

第 2 步:从安装路径运行 psql(检查您安装的位置 '#which postgres' 将用于找出安装位置)

[postgres@localhost bin]$ psql 
于 2015-01-24T10:42:22.673 回答
0

原因

Lion 已经安装了一个 postgres 版本,并默认使用这些二进制文件。通常,您可以通过使用自制 postgres 二进制文件的完整路径来解决此问题,但其他程序可能仍然存在问题。

解决方案

curl http://nextmarvel.net/blog/downloads/fixBrewLionPostgres.sh | sh

通过

http://nextmarvel.net/blog/2011/09/brew-install-postgresql-on-os-x-lion/

于 2013-07-22T04:10:05.643 回答
0

如果您在升级 Postgres 时(或升级后)遇到问题,请按照此处提到的步骤在版本之间安全传输数据,这将解决问题:

使用 Homebrew (macOS) 将 PostgreSQL 9.6.5 升级到 10.0

于 2017-12-04T05:43:30.877 回答
0

这就是它在我的 MacOS(我曾经homebrew安装过postgres)上为我修复此错误的方式:

> cd /opt/homebrew/var
> rm -rf postgres
> initdb ./postgres -E utf8
> pg_ctl -D ./postgres -l logfile start
> rm postgres/postmaster.pid
> brew services restart postgresql
> createdb $(whoami)
于 2021-10-29T08:14:06.177 回答
0

我使用了 Bitnami 堆栈并作为非 root 用户 psql 安装。在使用 psql 时,我确实收到了上述错误。

原来,有 2 个版本的psql

  1. linux 发行版中预打包的根级 psql。这指向 /usr/bin/psql
  2. Bitnami 堆栈安装的非根级别 psql。这指向 /bitnami/postgresql/postgresql/bin/psql

您可能想要更改 psql 的别名,使其指向非 root 用户。

alias psql='/bitnami/postgresql/postgresql/bin/psql'

以上对我有用psql -U postgres

于 2017-07-09T06:38:30.977 回答
0

对于我们来说,我们必须在 psql 命令中定义 localhost,如下所示:

psql -h localhost -U postgres

不知道为什么-h不默认为localhost...

于 2019-06-13T22:29:48.357 回答
0

数据目录包含一个旧的 postmaster.pid 文件 / 数据目录包含一个不可读的 postmaster.pid 文件 PostgreSQL 在数据目录中放置了一个名为 postmaster.pid 的文件来存储 PostgreSQL 服务器进程的进程 ID。如果 PostgreSQL 崩溃,这个文件可能包含一个让 PostgreSQL 感到困惑的旧 pid。您可以通过删除 postmaster.pid 文件来解决此问题。但是,您必须确保 PostgreSQL 确实没有运行。打开活动监视器并确保没有名为“postgres”或“postmaster”的进程。

如果在 PostgreSQL 运行时删除 postmaster.pid 文件,就会发生不好的事情。

来源:https ://postgresapp.com/documentation/troubleshooting.html

于 2017-10-10T02:21:23.843 回答
0

MacOS Big Sur似乎将该Application\ Support文件夹重命名为ApplicationSupport. 所以更新的路径将是:

/Users/<USERNAME>/Library/ApplicationSupport/Postgres/var-10 
(or "/var-<YOUR PG VERSION>")
于 2020-12-15T12:21:55.207 回答
0

对我有用的最快解决方案:

  1. 在为 postgres 配置的端口中查找已在运行的 postgres 进程
lsof -i:5432
  1. 找到postgres的进程id并杀死它们
kill -9 <pid>
于 2022-02-03T15:50:35.003 回答
0

我有 macOS Catalina (10.15.6) 和 PostgreSQL 12。

当我运行时brew services start postgresqlbrew说它启动 PostgreSQL 没有问题,但是当我得到ps auxw | grep post.

为了解决这个问题,我Postgres.app这个链接安装,然后安装并按下Init按钮。

它会找到您的数据库并将其显示给您。

于 2020-09-04T11:04:33.037 回答
0

我必须修复目录的权限:

sudo chmod 0750 /usr/local/var/postgres
于 2020-03-26T11:32:52.413 回答
0

在我的情况下,我正在运行其他项目docker-compose,我不得不停止 postgresqlsudo service postgresql stop && docker-compose up -d postgres && docker-compose up rails

为了在我的新项目中修复这个错误,我只需要运行:sudo service postgresql restart然后它就修复了它。

于 2020-07-20T14:43:23.987 回答
0

对于 macOS Monterey,我使用了brew services restart postgresql.

brew install postgresql
createdb mydb
createdb: error: connection to server on socket "/tmp/.s.PGSQL.5432" failed: No such file or directory
    Is the server running locally and accepting connections on that socket?

brew services restart PostgreSQL
==> Successfully started `postgresql` (label: homebrew.mxcl

于 2021-12-06T23:48:09.630 回答
0

原因之一是确保磁盘大小未满 执行 postmaster -D path of the postgres 命令

于 2018-07-16T13:58:52.870 回答
0

什么对我有用 我在运行时有 2 个版本的 PostgreSQLbrew services list

Name           Status  User           Plist
consul         stopped                
docker-machine stopped                
mysql          stopped                
postgresql     started homebrew.mxcl.postgresql.plist
postgresql@9.6 stopped                
redis          stopped                
runit          stopped                
unbound        stopped                
vault          stopped 

刚刚推出了另一个版本brew services start postgresql@9.6

于 2020-06-26T16:17:40.637 回答