PG :: ConnectionBad - 无法连接到服务器:连接被拒绝

时间:2013-11-07 05:06:18

标签: ruby-on-rails ruby database-connection rails-postgresql pg

每次我运行我的rails 4.0服务器,我得到这个输出。

Started GET "/" for 127.0.0.1 at 2013-11-06 23:56:36 -0500

PG::ConnectionBad - 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" (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" (fe80::1) and accepting
TCP/IP connections on port 5432?
:
 activerecord (4.0.0) lib/active_record/connection_adapters/postgresql_adapter.rb:825:in `connect'
 activerecord (4.0.0) lib/active_record/connection_adapters/postgresql_adapter.rb:542:in `initialize'
 activerecord (4.0.0) lib/active_record/connection_adapters/postgresql_adapter.rb:41:in `postgresql_connection'
 activerecord (4.0.0) lib/active_record/connection_adapters/abstract/connection_pool.rb:440:in `new_connection'
 activerecord (4.0.0) lib/active_record/connection_adapters/abstract/connection_pool.rb:450:in `checkout_new_connection'
 activerecord (4.0.0) lib/active_record/connection_adapters/abstract/connection_pool.rb:421:in `acquire_connection'
 activerecord (4.0.0) lib/active_record/connection_adapters/abstract/connection_pool.rb:356:in `block in checkout'
 /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/monitor.rb:211:in `mon_synchronize'
 activerecord (4.0.0) lib/active_record/connection_adapters/abstract/connection_pool.rb:355:in `checkout'
 activerecord (4.0.0) lib/active_record/connection_adapters/abstract/connection_pool.rb:265:in `block in connection'
 /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/monitor.rb:211:in `mon_synchronize'
 activerecord (4.0.0) lib/active_record/connection_adapters/abstract/connection_pool.rb:264:in `connection'
 activerecord (4.0.0) lib/active_record/connection_adapters/abstract/connection_pool.rb:546:in `retrieve_connection'
 activerecord (4.0.0) lib/active_record/connection_handling.rb:79:in `retrieve_connection'
 activerecord (4.0.0) lib/active_record/connection_handling.rb:53:in `connection'
 activerecord (4.0.0) lib/active_record/migration.rb:792:in `current_version'
 activerecord (4.0.0) lib/active_record/migration.rb:800:in `needs_migration?'
 activerecord (4.0.0) lib/active_record/migration.rb:379:in `check_pending!'
 activerecord (4.0.0) lib/active_record/migration.rb:366:in `call'
 actionpack (4.0.0) lib/action_dispatch/middleware/callbacks.rb:29:in `block in call'
 activesupport (4.0.0) lib/active_support/callbacks.rb:373:in `_run__1613334440513032208__call__callbacks'
 activesupport (4.0.0) lib/active_support/callbacks.rb:80:in `run_callbacks'
 actionpack (4.0.0) lib/action_dispatch/middleware/callbacks.rb:27:in `call'
 actionpack (4.0.0) lib/action_dispatch/middleware/reloader.rb:64:in `call'
 actionpack (4.0.0) lib/action_dispatch/middleware/remote_ip.rb:76:in `call'
 better_errors (0.9.0) lib/better_errors/middleware.rb:84:in `protected_app_call'
 better_errors (0.9.0) lib/better_errors/middleware.rb:79:in `better_errors_call'
 better_errors (0.9.0) lib/better_errors/middleware.rb:56:in `call'
 actionpack (4.0.0) lib/action_dispatch/middleware/debug_exceptions.rb:17:in `call'
 actionpack (4.0.0) lib/action_dispatch/middleware/show_exceptions.rb:30:in `call'
 railties (4.0.0) lib/rails/rack/logger.rb:38:in `call_app'
 railties (4.0.0) lib/rails/rack/logger.rb:21:in `block in call'
 activesupport (4.0.0) lib/active_support/tagged_logging.rb:67:in `block in tagged'
 activesupport (4.0.0) lib/active_support/tagged_logging.rb:25:in `tagged'
 activesupport (4.0.0) lib/active_support/tagged_logging.rb:67:in `tagged'
 railties (4.0.0) lib/rails/rack/logger.rb:21:in `call'
 quiet_assets (1.0.2) lib/quiet_assets.rb:18:in `call_with_quiet_assets'
 actionpack (4.0.0) lib/action_dispatch/middleware/request_id.rb:21:in `call'
 rack (1.5.2) lib/rack/methodoverride.rb:21:in `call'
 rack (1.5.2) lib/rack/runtime.rb:17:in `call'
 activesupport (4.0.0) lib/active_support/cache/strategy/local_cache.rb:83:in `call'
 rack (1.5.2) lib/rack/lock.rb:17:in `call'
 actionpack (4.0.0) lib/action_dispatch/middleware/static.rb:64:in `call'
 railties (4.0.0) lib/rails/engine.rb:511:in `call'
 railties (4.0.0) lib/rails/application.rb:97:in `call'
 rack (1.5.2) lib/rack/content_length.rb:14:in `call'
 thin (1.5.1) lib/thin/connection.rb:81:in `block in pre_process'
 thin (1.5.1) lib/thin/connection.rb:79:in `pre_process'
 thin (1.5.1) lib/thin/connection.rb:54:in `process'
 thin (1.5.1) lib/thin/connection.rb:39:in `receive_data'
 eventmachine (1.0.3) lib/eventmachine.rb:187:in `run'
 thin (1.5.1) lib/thin/backends/base.rb:63:in `start'
 thin (1.5.1) lib/thin/server.rb:159:in `start'
 rack (1.5.2) lib/rack/handler/thin.rb:16:in `run'
 rack (1.5.2) lib/rack/server.rb:264:in `start'
 railties (4.0.0) lib/rails/commands/server.rb:84:in `start'
 railties (4.0.0) lib/rails/commands.rb:78:in `block in <top (required)>'
 railties (4.0.0) lib/rails/commands.rb:73:in `<top (required)>'
 bin/rails:4:in `<main>'

我正在运行Mavericks OS X 10.9所以我不知道这是不是问题。我已尽力而为,但似乎没有任何工作。我已经多次卸载并安装了postgres和pg gem。

这是我的database.yml文件

development:
  adapter: postgresql
  encoding: unicode
  database: metals-directory_development
  pool: 5
  username: 
  password: 
  template: template0
  host: localhost
  port: 5432

test: &test
  adapter: postgresql
  encoding: unicode
  database: metals-directory_test
  pool: 5
  username: 
  password: 
  template: template0
  host: localhost
  port: 5432

staging:
  adapter: postgresql
  encoding: unicode
  database: metals-directory_production
  pool: 5
  username:
  password:
  template: template0
  host: localhost

production:
  adapter: postgresql
  encoding: unicode
  database: metals-directory_production
  pool: 5
  username:
  password:
  template: template0
  host: localhost

cucumber:
  <<: *test

任何人都可以帮助我吗?

36 个答案:

答案 0 :(得分:560)

它可能像陈旧的 PID文件一样简单。它可能会失败,因为您的计算机没有完全完成关机过程,这意味着 postgres 没有删除 PID (进程ID)文件。

postgres使用PID文件来确保一次只运行一个服务器实例。因此,当它再次启动时,它会失败,因为已经有 PID 文件告诉 postgres 启动了另一个服务器实例(即使它没有运行) ,它只是没有关闭并删除PID)。

  1. 要修复它,请删除/重命名PID文件。找到postgres数据目录。在使用自制软件的MAC上,它是/usr/local/var/postgres/,其他系统可能是/usr/var/postgres/
  2. 要确保这是问题所在,请查看日志文件(server.log)。在最后一行,您将看到:
  3.   

    致命:锁定文件“postmaster.pid”已经存在   提示:另一个postmaster(PID 347)是否在数据目录“/ usr / local / var / postgres”中运行?

    1. 如果是,rm postmaster.pid
    2. 重新启动服务器。在使用launchctl(使用自制程序)的mac上,以下命令将重新启动服务器。

      launchctl unload homebrew.mxcl.postgresql.plist  
      launchctl load -w homebrew.mxcl.postgresql.plist
      

      或更新版本的 Brew

      brew services restart postgresql
      

答案 1 :(得分:42)

经过大量的搜索和分析,我找到了一个解决方案,如果你使用的是ubuntu,只需在你的终端中写下这个命令然后点击回车

sudo service postgresql restart

这将重新启动你的PostgreSQL,希望这对你有帮助。

答案 2 :(得分:32)

我已经设法通过遵循Chris Slade的答案来解决问题,但是要重新启动服务器,我必须使用以下命令:

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

launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

我发现here(pjammer的答案在底部)

答案 3 :(得分:24)

您的系统中是否安装了postgresql?如果没有,请观看Install postgresql。成功将 postgresql 集成到系统后,您可以在系统终端中键入类似的内容:

which psql
#=> /usr/bin/psql

之后你需要在postgresql中创建一个用户和数据库,如下所示:

sudo su - postgres
psql

然后您可以在终端中看到以下内容

postgres=#

键入:

CREATE USER yourname WITH PASSWORD 'passwordhere';
CREATE DATABASE metals-directory_production  WITH OWNER yourname;
GRANT ALL PRIVILEGES ON DATABASE metals-directory_production TO yourname;

执行此操作后,您需要更正database.yml。可能你需要这样的东西:

development:
  adapter: postgresql
  encoding: unicode
  database: metals-directory_development
  pool: 5
  username: yourname
  password: passwordhere   ### password you have specified within psql
  host: localhost
  port: 5432               ### you can configure it in file postgresql.conf

此外,如果您遇到postgresql问题,最好检查pg_hba.conf

答案 4 :(得分:22)

要使用 Postgres 修复这些类型的问题,并在Mac OSX上使用 Postgres ,这可能是 BEST 以及到目前为止我找到的 EASIEST 解决方案:

http://postgresapp.com/

只需下载,安装并快乐:)

答案 5 :(得分:15)

  1. 卸载pg:

    gem uninstall pg
  2. 卸载postgres:

    brew uninstall postgres
  3. 点击postgres文件夹,它可能会留下一堆陈旧的东西:

    rm -rf /usr/local/var/postgres
  4. 重新启动(可能没必要)

  5. 重新安装pg:

    brew install postgres
  6. 我在克里斯斯莱德的评论中的评论很难开始,现在我使用的brew服务在很多方面简化了我的生活:

    brew install services
  7. 然后用它开始:

    brew services start postgresql
  8. 重新安装gem:

    gem install pg
  9. 和bobsyouruncle。

答案 6 :(得分:12)

检查文件 postgresql.conf (在ubuntu上是 /etc/postgresql/XX/main/postgresql.conf )并查找该行那说:

listen_addresses="localhost"

尝试将其更改为:

listen_addresses="*"

它将接受每个IP,接下来检查说:

port=5432

并检查是否与database.yml的端口相同,默认情况下我的postgresql-9.2使用 5433 而不是 5432 ,不要忘记重启 postgres服务器,

祝你好运!

答案 7 :(得分:11)

正如@Magne所述,错误PG::ConnectionBad - could not connect to server: Connection refused可以在PostgreSQL的major/minor version升级(例如9.5 -> 9.69 -> 10)后显示。

在PostgreSQL版本9.6发布后运行brew upgrade postgresql后出现此错误。问题是主要/次要版本升级需要额外的步骤才能将旧日期迁移到新版本。

如何检查这是否是您的问题

您可以通过查看与自制软件一起安装的最新brew程序PostgreSQL版本来检查这是否是问题...

$ brew info postgresql

/usr/local/Cellar/postgresql/9.5.4_1 (3,147 files, 35M)
Poured from bottle on 2016-10-14 at 13:33:28
/usr/local/Cellar/postgresql/9.6.1 (3,242 files, 36.4M) *
Poured from bottle on 2017-02-06 at 12:41:00

...然后将其与当前的PG_VERSION进行比较

$ cat /usr/local/var/postgres/PG_VERSION
9.5

如果PG_VERSION小于最新的brew公式并且差异是主要/次要版本更改,那么这可能是您的问题。

如何修复(例如如何升级数据)

以下说明适用于从9.5升级到9.6。根据您自己的升级更改版本号

第1步。 确保PostgreSQL已关闭:

$ launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
# or, with Homebrew...
$ brew services stop postgresql

第2步。 创建一个新的原始数据库:

$ initdb /usr/local/var/postgres9.6 -E utf8

第3步。 检查新旧二进制版本是什么:

$ ls /usr/local/Cellar/postgresql/
9.5.3   9.5.4   9.6.1

请注意,在此示例中,我将从9.5.4二进制文件升级到9.6.1二进制文件

第4步。 使用pg_upgrade实用程序将当前数据迁移到新数据库。

$ pg_upgrade \
  -d /usr/local/var/postgres \
  -D /usr/local/var/postgres9.6 \
  -b /usr/local/Cellar/postgresql/9.5.4/bin/ \
  -B /usr/local/Cellar/postgresql/9.6.1/bin/ \
  -v
  • -d标志指定当前数据目录
  • -D flag指定要创建的新数据目录
  • -b指定旧二进制文件
  • -B指定我们要升级到
  • 的新二进制文件

第5步。 将旧数据目录移开

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

第6步。 将新创建的数据目录移动到PostgreSQL期望的位置

$ mv /usr/local/var/postgres9.6 /usr/local/var/postgres

第7步。 再次启动PostgreSQL

$ launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
# or, if you're running a current version of Homebrew
$ brew services start postgresql

第8步。 如果你正在使用pg gem for Rails,你应该通过卸载并重新安装gem来重新编译(如果你是这样,请跳过这一步骤)不使用pg gem)

$ gem uninstall pg
$ gem install pg

步骤9.(可选) 在您确信一切正常后,您可以使用以下命令重新获得一些磁盘空间:< / p>

brew cleanup postgresql

...如果您感到非常勇敢,可以使用以下命令删除旧的PostgreSQL数据目录

rm -rf /usr/local/var/postgres9.5/

(此答案基于一篇优秀的博文https://keita.blog/2016/01/09/homebrew-and-postgresql-9-5/并附加了一些内容)

答案 8 :(得分:7)

如上所述,我刚刚在我的Mac上打开了 Postgres应用,点击了打开Psql,关闭了psql窗口,重新启动了我的 rails服务器< / strong>在我的终端中,它再次正常工作,没有更多错误。

相信大象:http://postgresapp.com/

答案 9 :(得分:6)

这才是真正帮助我的。

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

参考: http://alumni.lewagon.org/questions/60

答案 10 :(得分:5)

如果您在执行brew upgrade后将postgres升级到新的主要版本(f.ex 9.3.09.4.0或更高版本)后遇到此问题,请执行以下操作:

  

@ dmitrygusev来自https://github.com/Homebrew/homebrew/issues/35240的修复

     

以下官方[Postgresql]迁移指南帮助:

brew switch postgres 9.3.5    # presuming you already installed 9.4.1
pg_dumpall > outputfile
launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
mv /usr/local/var/postgres /usr/local/var/postgres.old
brew switch postgres 9.4.1
initdb -D /usr/local/var/postgres
psql -d postgres -f outputfile
     

这就是全部。检查导入是否顺利,然后删除备份:

rm outputfile
rm -Rf /usr/local/var/postgres.old

这里的问题是,在postgres的主要版本升级时,有必要重新创建/迁移您的数据库。可能是chown目录或手动调用initdb

另请参阅:How to upgrade PostgreSQL from version 9.5 to version 9.6 without losing data?

如果您不使用Homebrew,可能会提供其他一些提示:

如何手动停止PG服务器:

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

如何手动启动PG服务器:

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

答案 11 :(得分:4)

在Osx Movaje上更新Mac后,我遇到了同样的问题。

我找到了这个解决方案:

首先尝试在您的终端中使用以下波纹管命令行:

brew services restart postgresql

如果什么都没有改变:

ps aux | grep postgres

如果仍然没有变化:

ls -ls | grep post

最后一个修复它的命令,通过从root执行删除了postgres锁定文件:

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

然后:

brew services restart postgresql

来自berziiii:https://github.com/ga-wdi-boston/capstone-project/issues/325

希望会有所帮助:)

关于!!

答案 12 :(得分:3)

host: localhost放入database.yml文件并运行此命令:

rake db:create db:migrate  

答案 13 :(得分:3)

找到您在/usr/local/var/postgres//usr/var/postgres/中的postgres文件,然后删除该文件夹中的postmaster.pid文件。

答案 14 :(得分:2)

这发生在我升级 Postgres 之后(通过 Homebrew)。我从 12 版升级到了 13 版。

如果您遇到这种情况,请尝试运行 postgres -D /usr/local/var/postgres 并检查输出。就我而言,它表示 database files are incompatible with server

修复数据库就像运行一样简单:

brew postgresql-upgrade-database

答案 15 :(得分:2)

如果删除 postmaster.pid 不能解决问题,这对我有用:

cd /usr/local/var/
rm -rf postgres/
mkdir postgres
initdb --locale=C -E UTF-8 postgres/
brew services restart postgresql

感谢@spirito_libero 在 this thread 上的解决方案。

答案 16 :(得分:1)

我的问题出在我的 application.yml 文件中。 url上的我的数据库heroku未使用端口5342.请检查heroku配置var DATABASE_URL。确保与适用数据库的 application.yml 完全匹配。

答案 17 :(得分:1)

我遇到了同样的问题,这个解释为我解决了这个问题:http://blog.55minutes.com/2013/09/postgresql-93-brew-upgrade/

关键步骤是查看 /usr/local/var/postgres/server.log 的尾部, 让我看看真正的问题是什么,这是我还没有完全完成升级PostgreSQL的过程

答案 18 :(得分:1)

肯定是@Chris Slade的答案帮助了我。

如果有用的话,我写了一个小脚本来杀死剩下的进程:

kill_postgres() {
  if [[ $* -eq "" ]]; then
    echo "Usage: 'kill_postgres <db_name>' to kill remaining instances (Eg. 'kill_postgres my_app_development')"
  else
    gksudo echo "Granted sudo"
    pids="$(ps xa | grep postgres | grep $* | awk '{print $1}' | xargs)"
    if [[ $pids -eq "" ]]; then
      echo "Nothing to kill"
    else
      for pid in "${pids[@]}"
      do
        echo "Killing ${pid}"
        sudo kill $pid
        echo "Killed ${pid}"
      done
      kill_postgres $*
    fi
  fi
}

答案 19 :(得分:1)

我今晚遇到了这个问题,在我已经工作了一段时间的Rails应用程序上工作。我的问题仅仅是归因于我的Postgresql服务器未运行

我转到屏幕顶部(在Mac上),然后单击小象图标,然后单击“开始”。

打开我们的服务器的电源。

希望这为某人提供了一个简单的解决方案。

答案 20 :(得分:1)

我知道这已经晚了但可能对某人有所帮助。 我遇到了同样的问题。事实证明我有两个版本的postgres 9.1和9.5。我卸载了9.1和9.5并再次安装了9.5,它对我有用。

答案 21 :(得分:1)

使用Postgres应用的Mac用户可能想要打开应用程序(聚光灯搜索Postgres或在菜单栏中找到大象图标)。在那里你可能会看到一个带有消息的红色X:&#34; Stale postmaster.pid文件&#34;。不幸的是,聚光灯搜索无法显示此文件的位置。单击&#34;服务器设置...&#34;,然后在打开的对话框中,单击&#34;显示&#34;按钮打开数据目录。导航一个文件夹(对我来说是&#34; var-10&#34;),然后删除postmaster.pid文件。

返回Postgres应用程序并单击“开始”按钮。那个红色的X应该变成一个绿色的复选标记,上面写着#34; Running&#34;。现在,您应该能够在终端中成功运行像rails server这样的Rails命令。

Postgres App Server Settings - Show Data Directory

答案 22 :(得分:1)

我只是运行此命令sudo service postgresql restart 一切都恢复了。

答案 23 :(得分:1)

我遇到了同样的问题。我检查utf8mb4PostgreSQL个日志文件的最后一行。 文件 /etc/postgresql/9.5/main/postgresql.conf 中存在无法识别的配置参数。评论/var/log/postgresql中的错误行解决了我的问题。

答案 24 :(得分:1)

我在制作中遇到同样的问题(开发一切正常), 在我的情况下,数据库服务器与应用程序在同一台计算机上,所以最后通过写入来实现迁移:

bundle exec rake db:migrate RAILS_ENV=production

然后重新启动服务器,一切正常。

答案 25 :(得分:1)

您可能重新启动了计算机并忘记启动Postgres应用程序。

答案 26 :(得分:0)

我刚遇到这个问题,并没有一个建议的解决方案适合我。经过大量的谷歌搜索,我确实找到了解决方案。这对我有用。

首先,我必须运行此命令来启动服务器,我猜测设置配置文件的位置。

pg_ctl -D /usr/local/var/postgres start && brew services start postgresql

然后我运行此命令来访问postgres

psql postgres

在postgres提示下,然后我输入&#34; \ du&#34;列出角色

postgres=# \du

postgres角色丢失了所以我不得不用这个命令创建它

CREATE ROLE POSTGRES WITH SUPERUSER CREATEDB CREATEUSER CREATEROLE REPLICATION BYPASSRLS ;

这解决了我的问题,我希望这有助于其他人。

答案 27 :(得分:0)

在跟踪更新了postgresql的brew upgrade之后,我遇到了这个错误。我找到了如何解决这个伟大的帖子我的问题。我能够让postgres备份并运行,甚至可以迁移到我现有的所有数据库中。 https://coderwall.com/p/ti4amw/how-to-launch-postgresql-after-upgrade

答案 28 :(得分:0)

您不必删除postmaster.pid文件,因为这可能会导致数据损坏。

选项?只需kill的过程即可(不要使用kill -9,只需执行普通的杀死操作即可。)

然后只需重新启动postgres服务器,您就可以开始了!

以下是实现该目标的步骤:

  1. 找到并打开postmaster.pid文件(我的计算机在Mac Sierra上)

    vi ~/Library/Application\ Support/Postgres/var-10/postmaster.pid

  2. 复制PID-这是postmaster.pid文件第一行中的数字

  3. 使用kill PID终止该过程,例如,如果我的PID为381,我将执行kill 381
  4. 重新启动Postres-如果使用brew,请执行brew services start postgresql。 或者,如果使用postgresapp,只需点击start按钮

答案 29 :(得分:0)

Homebrew软件包管理器包括launchctl plists,它们可以自动启动。有关更多信息,请运行brew info postgres

手动启动:

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

手动停止:

pg_ctl -D /usr/local/var/postgres stop

自动启动:

“要启动,请立即启动postgresql并在登录时重新启动:”

brew services start postgresql

答案 30 :(得分:0)

我必须重新安装我的postgres,此处概述了一些很好的说明: https://medium.com/@zowoodward/effectively-uninstall-and-reinstall-psql-with-homebrew-on-osx-fabbc45c5d9d

然后我必须创建postgres用户: /usr/local/opt/postgres/bin/createuser -s postgres

这种方法会破坏您的所有本地数据,因此请在需要时备份您的数据。

答案 31 :(得分:0)

就我而言,存在权限问题。

看到日志后我发现了问题,运行

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

我发现了

2020-07-17 15:08:47.495 PKT [16282] FATAL:  data directory "/usr/local/var/postgres" has invalid permissions
2020-07-17 15:08:47.495 PKT [16282] DETAIL:  Permissions should be u=rwx (0700) or u=rwx,g=rx (0750).

我刚跑

sudo chmod -R 700 /usr/local/var/postgres

有效。

答案 32 :(得分:0)

我已经尝试了以上所有答案,但对我而言却无效。

就我而言,当我检查/usr/local/var/log/postgres.log上的日志时。很好,没有错误。但是我可以看到它正在监听我的本地IPV6地址"::1"

在我的database.yml中,我是这样做的

host:     <%= ENV['POSTGRESQL_ADDON_HOST'] || '127.0.0.1' %>

我更改了

host:     <%= ENV['POSTGRESQL_ADDON_HOST'] || 'localhost' %>

然后有效

答案 33 :(得分:0)

对于 MacOS,我使用这个:

brew info postgres

最后在输出中,我看到:

...
To have launchd start postgresql now and restart at login:
  brew services start postgresql
Or, if you don't want/need a background service you can just run:
  pg_ctl -D /usr/local/var/postgres start

所以我只用这个命令 pg_ctl -D /usr/local/var/postgres start psql 开始工作。

答案 34 :(得分:0)

我停止了rails服务器,运行了rake db:migrate并启动了我的rails s

答案 35 :(得分:0)

对我来说,这真的很简单:我有一个陈旧的 postmaster.pid 文件。

只需删除并重新启动 postgres 即可为我修复:

rm '/Users/<username>/Library/Application Support/Postgres/var-10/postmaster.pid'