像其他一些人一样,当我在我的项目中运行rake db:migrate或甚至为我的Ruby on Rails 3.2应用程序尝试大多数数据库任务时,我收到此错误。
PGError(无法连接到服务器:没有这样的文件或目录。服务器是否在本地运行并接受Unix域套接字上的连接“/tmp/.s.PGSQL.5432”?
很久以前我用PostgreSQL安装了Homebrew,并且在最近尝试安装MongoDB后,我的PostgreSQL安装从未如此。我正在运行OS X v10.6 Snow Leopard。
有什么问题,我怎么能更好地理解PostgreSQL是如何设置在我的Mac上的呢?
到目前为止(我认为)这告诉我PostgreSQL没有运行(?)。
ps -aef|grep postgres (ruby-1.9.2-p320@jct-ana) (develop) ✗
501 17604 11329 0 0:00.00 ttys001 0:00.00 grep postgres
但这是否告诉我PostgreSQL正在运行?
✪ launchctl load -w /usr/local/Cellar/postgresql/9.1.4/homebrew.mxcl.postgresql.plist (ruby-1.9.2-p136)
homebrew.mxcl.postgresql: Already loaded
我该如何解决?我没看到什么?
PS:~/Library/LaunchAgents
包含两个PostgreSQL .plist文件。我不确定这是否相关。
org.postgresql.postgres.plist
homebrew.mxcl.postgresql.plist
我尝试了下面的结果,得到了如下结果。
$ psql -p 5432 -h localhost
psql: could not connect to server: Connection refused
Is the server running on host "localhost" (127.0.0.1) and accepting
TCP/IP connections on port 5432?
could not connect to server: Connection refused
Is the server running on host "localhost" (::1) and accepting
TCP/IP connections on port 5432?
could not connect to server: Connection refused
Is the server running on host "localhost" (fe80::1) and accepting
TCP/IP connections on port 5432?
我已经阅读了,因为OS X安装了自己版本的PostgreSQL,而Homebrew在不同的地方安装了不同的版本,PostgreSQL命令在/ tmp /目录中查找。您需要在Stack Overflow上搜索更多内容,但基本上您可以通过符号链接PostgreSQL,以便任何查看该tmp路径的内容实际上都能找到真正的路径,如果这有意义的话。
这是我发现更多东西要尝试的链接,特别是如上所述的qmlxswpoi。我仍然希望有人能够对OS X上安装PostgreSQL背后的概念进行合理的解释,以及为什么这么困难。
帮助进行故障排除的最新见解:
Mac OSX Lion Postgres does not accept connections on /tmp/.s.PGSQL.5432
然后运行:
$ which psql // This tells you which PostgreSQL you are using when you run $ psql.
要考虑的关键是:
确保要运行的PostgreSQL副本的路径条目在OS X系统的PostgreSQL路径之前进行。
这是决定运行PostgreSQL的核心要求,也是我所说的导致大多数这些问题的原因。
检查postgres目录中没有postmaster.pid,可能是$ echo $PATH
删除它并启动服务器。
检查 - /usr/local/var/postgres/
是launchctl的绝佳包装。
我真的不懂Mac或Homebrew,但我非常了解PostgreSQL。
您想知道PostgreSQL尝试启动日志的位置以及PostgreSQL的套接字目录。默认情况下,在构建PG时,套接字目录为/ tmp /。如果你在构建PG时没有改变它,然后你启动了PG,你应该能够在/ tmp中看到一个套接字文件:ls -al / tmp
套接字文件以“。”开头,所以你不会看到它带有'-a'到ls。
如果你没有在那里看到套接字,并且你没有看到ps awux中的任何内容grep postgres,然后PG可能没有运行,或者它可能是,并且它是OSX安装的。可能发生的事情是,您可能在localhost上使用端口5432时遇到冲突 - 使用netstat -anp来查看5432上正在侦听的内容(如果有的话)。如果Mac OSX PG已经在侦听该端口,那么可能是问题。
希望有所帮助。我听说自制软件可以让事情变得有点丑陋,很多人都在谈论鼓励使用虚拟机。
原因
Lion附带已安装的postgres版本,默认情况下使用这些二进制文件。一般来说,你可以通过使用自制的postgres二进制文件的完整路径解决这个问题,但是其他程序可能仍然存在问题。
解决方案
卷曲https://github.com/facebook/react-native/issues/18760#issuecomment-410533581 | SH
通过
你好,世界 :) 对我来说,最好但最奇怪的方法是做下一件事。 1)下载http://nextmarvel.net/blog/2011/09/brew-install-postgresql-on-os-x-lion/或其他版本。将此应用添加到/ Applications /文件夹中。
2)在文件postgres93.app(在我的主目录中)中添加一行(命令):
export PATH=/Applications/Postgres93.app/Contents/MacOS/bin/:$PATHIt's a PATH to
.bash_profile
from psql
. The row (command) runs every time console is started.
3)从Postgres93.app
文件夹启动Postgres93.app
。它启动本地服务器(端口为“5432”,主机为“localhost”)。
4)经过所有这些操作后,我很高兴运行/Applications/
和其他命令,并看到它有效! $ createuser -SRDP user_name
可以在每次系统启动时运行。
5)此外,如果您想以图形方式查看数据库,则应安装Postgres93.app
。将postgres数据库视为漂亮的数据表是一种很好的方式
当然,它仅对本地服务器有用。如果这些指示可以帮助那些面临这个问题的人,我将很高兴。
我有PostgreSQL 9.3并得到了同样的错误,
无法连接到服务器:连接被拒绝服务器是否在主机“localhost”(127.0.0.1)上运行并接受端口5432上的TCP / IP连接?
我修复了这个:
PG Commander.app
这个对我有用。
为了它的价值,当我在我的chmod 777 /var/lib/pgsql/9.3/data/pg_hba.conf
service postgresql-9.3 restart
文件(md4
)中输入错字(md5
而不是pg_hba.conf
)时,我遇到了同样的错误
如果你像我一样到达这里,请仔细检查该文件一次,以确保那里没有任何荒谬的东西。
出现此错误的一个原因是当您重新启动计算机时,本地postgres数据库会关闭。在新的终端窗口中,只需键入:
/etc/postgresql/9.5/main/pg_hba.conf
重启服务器。
在本地运行PostgreSQL可能会有不同的问题。我建议清理所有安装的postgres版本并重新开始。一旦安装完成,如果你的rails项目具有最新的$psql -h localhost
,则很容易重新创建数据库
这是我通常db/schema.rb
。如果您在本地root用户下运行数据库,则可能需要省略创建install PostgreSQL on a Mac用户的最后一步
其中一个原因可能是
postgresql.conf文件中的unix_socket_directories未与其查找的目录一起列出。
在问题示例中,它正在查找目录/ tmp,这必须在postgresql.conf文件中提供
这样的事情:
todo
这个解决方案对我有用。
如果您使用的是MacOS并使用自制软件,我发现这个答案非常有帮助:
unix_socket_directories = '/var/run/postgresql,/tmp' # comma-separated list of directories
对我来说,我的服务器正在运行,但由于升级,我遇到连接问题(注意:我使用brew服务)。如果Postgres正在运行,请尝试https://stackoverflow.com/a/27708774/4062901并查看日志所说的内容。我的错误是迁移,而不是连接问题。
他们建议手动迁移后(这确实有效)我发现我的用户不再有桌子了。尝试此命令来解决这个问题:cat /usr/local/var/postgres/server.log
(通过createdb
回答)
只要运行psql: FATAL: database "<user>" does not exist出现错误就重新启动Postgres,然后再试一次
更新:如果你在OSX上,这里有一个更好的修复......
https://github.com/mperham/lunchy
旧答案:
这是修复,更多信息在这里:
首先,停止db,然后
这很简单。仅在database.yaml文件中添加主机。
对我来说,这是有效的
https://github.com/mxcl/homebrew/issues/5004
对于你提到的上述错误,这对我有用..
1)可能会更改postgres.conf文件中未指定的默认端口,如果您在安装时提到了其他默认端口号5432。
(要么)
2)更改postgresql.conf文件中的端口号,然后重新启动数据库服务器
(要么)
3)代替psql类型的完整命令
“psql -p 5432 -h localhost”
如果您正在运行Homebrew,请卸载Postgresql end pg gems:*
rm /usr/local/var/postgres/postmaster.pid
下载并运行以下脚本以修复/ usr / local:* $ gem uninstall pg
$ brew uninstall postgresql
的权限
https://gist.github.com/rpavlik/768518
然后再次安装Postgres和pg gem:*
$ ruby fix_homebrew.rb
要在登录运行时启动postgresql:
$ brew install postgresql
$ initdb /usr/local/var/postgres -E utf8
或者手动启动。
安装pg gem
$ ln -sfv /usr/local/opt/postgresql/*.plist ~/Library/LaunchAgents
我希望有所帮助
当我将Postgres升级到9.3.x时,我遇到了这个问题。对我来说,快速修复是降级到之前的9.2.x版本(无需安装新版本)。
$ gem install pg
$ ls /usr/local/Cellar/postgresql/
9.2.4
9.3.2
$ brew switch postgresql 9.2.4
$ launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
$ launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
<open a new Terminal tab or window to reload>
$ psql
答案提供了更全面的解释以及解决问题的其他方法。
所以对于这里的很多问题,似乎人们已经在运行psql并且不得不删除This。但是,我没有那个问题,因为我从来没有在我的系统中正确安装postgres。
这是一个在MAC OSX Yosemite中适用于我的解决方案
postmaster.pid
并下载了应用程序。希望这可以帮助! Toodles!
此外,这个答案对我帮助最大:export PATH=$PATH:/Applications/Postgres.app/Contents/Versions/latest/bin
当你运行:psql -p 5432 -h localhost它不使用环回驱动程序但使用真正的套接字,因此你需要配置postgres接受套接字连接。因此即使pgadmin和其他客户端可能工作,psql也不会。
您需要更改postgresql.conf文件和pg_hba.conf文件,以便允许通过实际套接字进行连接。这也将允许从远程ip连接,这就是默认情况下禁用它的原因。
这些文件位于数据目录中,但实际位置可能会有所不同,具体取决于postgres的安装方式。运行postgres后,运行命令:
https://stackoverflow.com/a/21503349/3173748
这两个文件是-D目录(可能是/ usr / local / pgsql / data)。
对于postgresql.conf文件,取消注释listen_address并将其更改为:
ps -ef | grep postmaster
对于pg_hba.conf添加行:
listen_address = '*'
我通过升级postgres修复了这个问题。
host all all 0.0.0.0/0 md5
然后我还必须升级数据库以与新的主要版本兼容,因为我从10升级到11。
brew update
brew upgrade
(来源brew postgresql-upgrade-database
)