【问题标题】:psql: error: connection to server on socket "/tmp/.s.PGSQL.5432" failed: FATAL: database "myname" does not existpsql:错误:连接到套接字“/tmp/.s.PGSQL.5432”上的服务器失败:致命:数据库“myname”不存在
【发布时间】:2022-12-12 17:43:37
【问题描述】:

我使用 postgresql 在我的本地环境中运行一个 Rails 应用程序。今天早上我启动了一个新的并在安装 pg gem 等之后。我在尝试运行时遇到了以下错误

psql
psql: error: connection to server on socket "/tmp/.s.PGSQL.5432" failed: FATAL:  database "jackcollins" does not exist

奇怪的是数据库名称“jackcollins”来自我的其他 Rails 应用程序。

我跑了

pgrep -l postgres

输出是

20902 postgres
20919 postgres
20920 postgres
20921 postgres
20922 postgres
20923 postgres
20924 postgres

我不确定如何继续,以便这些应用程序都可以运行自己的 postgres 实例。

【问题讨论】:

  • 如果您ps ax | grep post,您将获得更多信息。它会告诉你是否有不止一个 Postgres 实例在运行。
  • 看起来你成功地做了你想做的事。他们每个人都有自己的 postgres 实例,其中一个实例没有同名的数据库。
  • 如果您有多个实例在运行,那么它们将监听不同的端口。为此,sudo ss -tunlp | grep post 将向您显示他们正在侦听的端口。

标签: ruby-on-rails postgresql


【解决方案1】:

我遇到了和你一样的问题,在尝试重新安装、rm -rf xxx.pid 等之后,我最终执行了以下命令并最终能够连接到 PostgreSQL 数据库。

  1. brew install postgresql
  2. 出现错误信息
  3. 运行createdb(因为 mac 不会在安装 PostgreSQL 后创建用户名数据库)
  4. 执行psql连接成功。

【讨论】:

  • 伙计,你在哪里,简直就是救命恩人!
  • 我不知道怎么做,但你救了我! ;)
【解决方案2】:

关于错误,您正在尝试连接到jackcollins,请问您可以测试尝试使用数据库标志进行连接吗?:

psql -d your_database_name

【讨论】:

    【解决方案3】:

    在没有-d <database_name>psql的情况下,将使用操作系统用户名作为数据库名。与许多事情一样,最好是显式而不是隐式,尤其是在处理新实例时。另外使用-h <host_name>-p <port_number>-U <user_name>。然后你就会知道你在联系谁,以及如何联系。此处详细说明psql,因为psqllibpq程序,此处Key words更详细。

    【讨论】:

      【解决方案4】:

      如果你输入

      psql --help
      

      在终端中,您会看到默认数据库是您的用户名。除非你在 PostgreSQL 中有那个数据库,否则你会得到一个错误。相反,您可以运行命令

      psql -d your_database_name
      

      另外,如果您想以特定用户身份登录(默认情况下是当前用户):

      psql -d your_database_name -U your_username -W
      

      最后一个 -W 是密码。希望能帮助到你!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-11-14
        • 2013-06-18
        • 1970-01-01
        • 1970-01-01
        • 2016-06-15
        • 2019-12-10
        • 2021-04-08
        相关资源
        最近更新 更多