AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 21587
Accepted
Meltemi
Meltemi
Asked: 2012-07-27 12:46:00 +0800 CST2012-07-27 12:46:00 +0800 CST 2012-07-27 12:46:00 +0800 CST

PostgreSQL 在本地运行,但我无法连接。为什么?

  • 772

最近将我的机器从 Mac OS X Lion (10.7.4) 更新到 Mountain Lion (10.8),我认为它破坏了我的 PostgreSQL 安装。它最初是通过 Homebrew 安装的。我不是 DBA,但希望有人能告诉我如何解决这个问题。

我无法连接(但在山狮之前能够连接):

$ psql -U rails -d myapp_development
psql: 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"?

但 Postgres 显然仍在运行:

$ ps aux | grep postgres
meltemi          2010   0.0  0.0  2444124   5292   ??  Ss   Wed01PM   0:00.02 postgres: rails myapp_development [local] idle    
meltemi           562   0.0  0.0  2439312    592   ??  Ss   Wed12PM   0:02.28 postgres: stats collector process       
meltemi           561   0.0  0.0  2443228   1832   ??  Ss   Wed12PM   0:01.57 postgres: autovacuum launcher process       
meltemi           560   0.0  0.0  2443096    596   ??  Ss   Wed12PM   0:02.89 postgres: wal writer process       
meltemi           559   0.0  0.0  2443096   1072   ??  Ss   Wed12PM   0:04.01 postgres: writer process       
meltemi           466   0.0  0.0  2443096   3728   ??  S    Wed12PM   0:00.85 /usr/local/bin/postgres -D /usr/local/varpostgres -r /usr/local/var/postgres/server.log

它正在响应来自本地 Rails 应用程序的查询(测试数据库和开发数据库)

  User Load (0.2ms)  SELECT "users".* FROM "users" 
  Rendered users/index.html.haml within layouts/application (1.3ms)

好像没有/var/pgsql_socket/目录,更别说/var/pgsql_socket/.s.PGSQL.5432上面提到的socket文件了!?!也许安装山狮消除了这一点?

$ ls -l /var/ | grep pg
drwxr-x---   2 _postgres  _postgres    68 Jun 20 16:39 pgsql_socket_alt

我该如何解决这个问题?

postgresql psql
  • 14 14 个回答
  • 152441 Views

14 个回答

  • Voted
  1. Best Answer
    Will
    2012-07-27T14:56:05+08:002012-07-27T14:56:05+08:00

    我发现我有一个非常相似的问题,即 postgres 正在打开一个套接字/var/pgsql_socket_alt,我的软件都不希望在其中看到,但我的问题的解决方案不仅仅是我的$PATH.

    我必须创建目录/var/pgsql_socket,自己整理,然后设置(位于unix_socket_directory)该目录,然后使用二进制文件成功启动正确的 postgres 服务器(这是进来的地方——确保解析为,或者总是明确地调用它)。postgresql.conf/usr/local/var/postgrespg_ctl/usr/local/bin$PATHwhich pg_ctl/usr/local/bin/pg_ctl

    /var/pgsql_socket_alt这可能会帮助通过提及找到此问题的其他用户。

    • 31
  2. Daniel Vérité
    2012-07-27T14:06:42+08:002012-07-27T14:06:42+08:00

    一个合理且典型的解释是psql,homebrew 附带的与/usr/local/bin/psql$PATH 中的不同,例如/usr/bin/psql(与 OS X 捆绑)。您可能想尝试使用完整路径:

    $ /usr/local/bin/psql -U rails -d myapp_development

    此外,您的问题的输出中有一些相当不寻常的东西ps:postgres 服务器在meltemiUnix 用户下运行,而通常使用专用的postgresUnix 用户。

    • 10
  3. Miguel
    2012-09-13T09:29:36+08:002012-09-13T09:29:36+08:00

    尝试:

    psql -U rails -d myapp_development -h localhost
    

    或者

    psql -U rails -d myapp_development -h 127.0.0.1
    
    • 4
  4. happynix
    2015-11-03T10:18:23+08:002015-11-03T10:18:23+08:00

    我不知道 psql 客户端的任何配置文件。但是 psql 确实尊重许多与命令行选项相关的环境变量。

    因此,要让 psql 自动使用您选择的套接字,您可以将 PGHOST 变量设置为包含套接字的目录。IE

    PGHOST=/var/pgsql_socket_alt
    psql -d mydatabsase
    
    • 4
  5. Foot
    2013-01-16T12:51:19+08:002013-01-16T12:51:19+08:00

    晚了,但我发现这很有帮助: http ://tammersaleh.com/posts/installing-postgresql-for-rails-3-1-on-lion

    那是给 Lion 的,但在从 10.6.8 升级到 Mountain Lion 并在 10.6.8 之前通过 HomeBrew 安装 PostgreSQL 后,我遇到了与该线程中的问题相同的问题。升级后我也有神秘的/var/pgsql_socket_alt文件夹,但我只是将其删除并/var/pgsql_socket按照@wolftron 的建议创建。然而,这并不是最终的解决方案。

    如果我在unix_socket_directory中留空/注释掉postgresql.conf,则升级之前存在的任何项目都会抱怨套接字 in/var/pgsql_socket丢失。但是如果我更改了 conf 和 hard-coded var/pgsql_socket,任何新项目都会抱怨 socket in/tmp丢失了。非常令人沮丧...直到我重新安装pg gem在 10.8 之前的项目中(gem uninstall pg && gem install pg)并在文件unix_socket_directory中注释掉。conf快速pg_ctl重新启动服务器后,新旧项目都可以正常工作。我的 pgsql 套接字/tmp现在就在里面,fwiw。

    旁注:如果您正在使用activerecord-postgresql-adaptergem,请先将其卸载,然后重新安装 pg,然后activerecord-postgresql-adapter再次安装。

    • 3
  6. Graham Ashton
    2013-04-19T05:11:31+08:002013-04-19T05:11:31+08:00

    我刚刚注册了 dba SE,所以似乎无法对相关帖子发表评论(真是个垃圾!)。

    但是,我确信我和@thure 是在同一条船上。我确保 /usr/local/bin 在我的 PATH 中比 /usr/bin 更早,检查了 shell 用whichand散列了哪些二进制文件type,等等。

    我看到了与@thure 相同的症状。然后我顿悟了;我意识到我已经pg在一个 shell 中重建了 gem(我正在使用 Ruby),它的 PATH 受到 Mac 的 path_helper 的不利影响(它从 /etc/profile 运行并将 /usr/bin 放在 /usr/local/bin 之前) .

    我卸载了 pg 并将其重新安装在 PATH 正确的 shell 中。突然间我可以连接了!

    因此,请确保您重新编译您的语言绑定人员,并让他们找到(大概)的正确副本pg_config。

    • 2
  7. eyemana
    2014-07-03T09:54:27+08:002014-07-03T09:54:27+08:00

    我无法快速找到找到此块的链接,但它对我有用。

    导出 PGHOST=localhost

    哦,这是链接。 https://stackoverflow.com/questions/13868730/socket-file-var-pgsql-socket-s-pgsql-5432-missing-in-mountain-lion-os-x-ser

    • 2
  8. Erik Trautman
    2013-05-18T12:49:04+08:002013-05-18T12:49:04+08:00

    我找到了这个答案: https ://stackoverflow.com/questions/10763143/in-rails-couldnt-create-database-for-adapter-postgresql 而且,尽管它很简单,但它对我有用......运行了一个$bundle update和它又开始工作了。

    • 1
  9. Danny Roberts
    2013-11-17T07:05:26+08:002013-11-17T07:05:26+08:00

    我发现将实际位置符号链接到预期位置效果很好:

    sudo ln -s /var/pgsql_socket_alt /var/pgsql_socket
    

    与@thure 接受的答案一致,但更简单。

    • 1
  10. rdiddly
    2016-06-08T07:32:37+08:002016-06-08T07:32:37+08:00

    在这里,2016 年,El Capitan 出现了,Apple 不断改变。Postgres 作为操作系统的一部分安装,postgres 配置文件将 postgresql.conf 中的 unix_socket_directories 属性设置为 /tmp。套接字位于 /tmp/.s.PGSQL.5432 中。我能够通过执行以下操作来解决这个问题:

    sudo ln -s /tmp /var/pgsql_socket
    

    希望这可以帮助某人。

    • 1

相关问题

  • 我可以在使用数据库后激活 PITR 吗?

  • 运行时间偏移延迟复制的最佳实践

  • 存储过程可以防止 SQL 注入吗?

  • PostgreSQL 中 UniProt 的生物序列

  • PostgreSQL 9.0 Replication 和 Slony-I 有什么区别?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何查看 Oracle 中的数据库列表?

    • 8 个回答
  • Marko Smith

    mysql innodb_buffer_pool_size 应该有多大?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    从 .frm 和 .ibd 文件恢复表?

    • 10 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    如何选择每组的第一行?

    • 6 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    pedrosanta 使用 psql 列出数据库权限 2011-08-04 11:01:21 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST
  • Martin Hope
    bernd_k 什么时候应该使用唯一约束而不是唯一索引? 2011-01-05 02:32:27 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve