我已经在OSX上安装了postgresql.当我运行psql时,我得到

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

但是,来自/etc/services

postgresql      5432/udp    # PostgreSQL Database
postgresql      5432/tcp    # PostgreSQL Database
#                          Tom Lane <tgl@sss.pgh.pa.us>
pyrrho          5433/tcp    # Pyrrho DBMS
pyrrho          5433/udp    # Pyrrho DBMS

5433被皮罗占据,5432被分配给pg.我可以和他联系

psql -p 5432

但是为什么psql会认为它是5433,我如何在默认情况下使psql看起来在正确的位置?

推荐答案

/etc/services只是一个建议,它是一个著名港口的 list .这并不意味着该端口上实际正在运行任何东西,也不意味着命名服务将在该端口上运行.

在PostgreSQL中,如果端口5432可用,通常会使用端口5432.如果不是,大多数安装人员将 Select 下一个自由端口,通常是5433.

您可以使用netstat工具(可在OS X、Windows和Linux上使用,三者的命令行语法各不相同)查看实际运行的内容.

在Mac OS X系统上,不同的PostgreSQL软件包(苹果公司的古老版本PostgreSQL内置于操作系统Postgres中)的可怕混乱使这一点更加复杂.应用程序、brew 软件、Macports、EnterpriseDB安装程序等.

最终的结果是,用户安装Pg并从一个包启动服务器,但从另一个包使用psqllibpq客户端.通常情况下,这种情况发生在他们进行博士后考试时.应用程序或brew Pg,并与操作系统附带的psql连接.不仅这些端口有时有不同的默认端口,而且Mac OS X附带的Pg也有不同的default unix socket path,因此即使服务器在同一端口上运行,它也不会监听同一个unix套接字.

大多数Mac用户都是通过使用tcp/ip和psql -h localhost来解决这个问题的.如果需要,还可以指定端口,例如psql -h localhost -p 5433.您可能有多个PostgreSQL实例正在运行,因此请确保使用select version()SHOW data_directory;连接到正确的实例.

还可以指定unix套接字目录;判断要连接的PostgreSQL实例的unix_socket_directories设置,并用psql -h指定,例如psql -h /tmp.

一个更干净的解决方案是修正你的系统PATH,这样与你实际运行的PostgreSQL相关的psqllibpq就可以在PATH上找到.具体细节取决于你的Mac OS X版本和你安装的Pg软件包.我不使用Mac,如果不花费比目前更多的时间,我也无法提供更多关于这方面的细节.

Postgresql相关问答推荐

无法从Docker迁移Golang上的两个不同服务到一个数据库'

为什么更新不设置较晚的结束时间?

Postgres:这是对OVERLAPS谓词的等效重写吗?

执行准备好的语句不返回数据

对 VOLATILE 函数的调用会 destruct SELECT 语句的原子性

我可以使用 SQLAlchemy 映射数据类创建 Postgres `GENERATED ALWAYS AS` 列吗?

使用 WHERE 子句创建递归视图

带有附加组的时间刻度 interpolated_average

这个 Supbase 查询在 SQL ( Postgresql ) 中的类似功能是什么

安装 pg gem 失败,mkmf.rb 找不到 ruby​​ 的头文件(Mac OSX 10.6.5)

Postgres中的GROUP BY - JSON数据类型不相等?

我应该使用哪个 postgresql 包?

Select 空字段

PostgreSQL如何连接间隔值'2天'

错误:CASE types character varying and numeric cannot be matched

Rails:PG :: InsufficientPrivilege:错误:permission denied for relation schema_migrations

如何将主键添加到视图?

从长时间的postgres转换日期

在 postgres 中存在不同的 string_agg 问题

在布尔字段上添加索引