PG::ConnectionBad - could not connect to server: Connection refused
每次运行Rails4.0服务器时,都会得到这个输出。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 | 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文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | 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 |
有人能帮我吗?
它可以像一个过时的PID文件一样简单。它可能会无声地失败,因为您的计算机没有完全完成关闭过程,这意味着Postgres没有删除PID(进程ID)文件。
Postgres使用PID文件来确保一次只运行服务器的一个实例。所以当它再次启动时,会失败,因为已经有一个pid文件告诉postgres服务器的另一个实例已经启动(即使它没有运行,它也不会关闭并删除pid)。
FATAL: lock file"postmaster.pid" already exists
HINT: Is another postmaster (PID 347) running in data directory"/usr/local/var/postgres"?
重新启动服务器。在使用launchctl(和homebrew)的Mac上,以下命令将重新启动服务器。
1 2 | launchctl unload homebrew.mxcl.postgresql.plist launchctl load -w homebrew.mxcl.postgresql.plist |
或在较新版本的BREW上
1 | brew services restart postgresql |
经过大量的搜索和分析,我找到了一个解决方案,如果您使用Ubuntu,只需在您的终端中编写这个命令,然后点击Enter。
1 | sudo service postgresql restart |
这将重新启动你的PostgreSQL,希望它能帮你砍头。
我已经按照ChrisSlade的回答解决了这个问题,但是要重新启动服务器,我必须使用以下命令:
1 2 3 | launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist |
我在这里找到的(Pjammer的答案在下面)
当Postgres不能正常关闭时,就会出现这个问题。下面是我如何通过三个简单步骤解决这个问题。
步骤1:转到Postgres目录
Mac用户会在
步骤2:通过运行此命令删除
1 | rm postmaster.pid |
步骤3:重新启动服务器
MAC用户
1 | brew services restart postgresql |
Linux用户
1 | sudo service postgresql restart |
最后重新启动你的应用程序,你就可以走了。
您的系统中是否安装了PostgreSQL?如果没有,请观看Install PostgreSQL。成功地将PostgreSQL集成到系统中之后,可以在系统终端中键入类似的内容:
1 2 | which psql #=> /usr/bin/psql |
之后,您需要在PostgreSQL中创建一个用户和数据库,如下所示:
1 2 | sudo su - postgres psql |
然后您可以在终端中看到以下内容
1 | postgres=# |
类型:
1 2 3 | CREATE USER yourname WITH PASSWORD 'passwordhere'; CREATE DATABASE metals-directory_production WITH OWNER yourname; GRANT ALL PRIVILEGES ON DATABASE metals-directory_production TO yourname; |
这样做之后,您需要更正您的
1 2 3 4 5 6 7 8 9 | 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
为了解决Postgres的这类问题,并与Postgres在
网址:http://postgresapp.com/
只需下载、安装并快乐:)
卸载PG:
1 | gem uninstall pg |
卸载Postgres:
1 | brew uninstall postgres |
核弹Postgres文件夹,它可能会与一堆陈旧的东西在一起:
1 | rm -rf /usr/local/var/postgres |
重新启动(可能不必要)
重新安装PG:
1 | brew install postgres |
我在ChrisSlade的回答中的评论开始了PG的艰难之路,现在我使用了BREW服务,它在很多方面简化了我的生活:
1 | brew install services |
从pg开始:
1 | brew services start postgresql |
重新安装宝石:
1 | gem install pg |
还有你叔叔。
检查文件postgresql.conf(在
1 | listen_addresses="localhost" |
尝试将其更改为:
1 | listen_addresses="*" |
它将接受每一个IP,然后检查下面的行:
1 | port=5432 |
并检查是否与您的database.yml相同,在我的postgresql-9.2上默认使用5433而不是5432,不要忘记重启postgres服务器。
祝你好运!
如@magne所述,在PostgreSQL的主要/次要版本升级(如
我在PostgreSQL 9.6版发布后运行了
如何检查这是否是您的问题
您可以通过检查随自制程序安装的最新BREW Formula PostgreSQL版本来检查这是否是问题所在…
1 2 3 4 5 6 | $ 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_版本进行比较
1 2 | $ cat /usr/local/var/postgres/PG_VERSION 9.5 |
如果pg_版本低于最新的BREW公式,并且差异是主要/次要版本更改,那么这可能是您的问题。
如何修复(即如何升级数据)
以下说明用于从9.5升级到9.6。根据您自己的升级更改版本号
步骤1。确保PostgreSQL已关闭:
1 2 3 | $ launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist # or, with Homebrew... $ brew services stop postgresql |
步骤2。创建新的原始数据库:
1 | $ initdb /usr/local/var/postgres9.6 -E utf8 |
步骤3。检查旧的和新的二进制版本是什么:
1 2 | $ ls /usr/local/Cellar/postgresql/ 9.5.3 9.5.4 9.6.1 |
注意,在这个示例中,我将从9.5.4二进制升级到9.6.1二进制
步骤4。使用pg_升级实用程序将当前数据迁移到新数据库。
1 2 3 4 5 6 | $ 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 标志指定要创建的新数据目录-b 指定旧二进制-b 指定要升级到的新二进制文件
步骤5。将旧数据目录移到一边
1 | $ mv /usr/local/var/postgres /usr/local/var/postgres9.5 |
步骤6。将新创建的数据目录移动到PostgreSQL期望的位置
1 | $ mv /usr/local/var/postgres9.6 /usr/local/var/postgres |
步骤7。重新启动PostgreSQL
1 2 3 | $ 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,则跳过此步骤)。
1 2 | $ gem uninstall pg $ gem install pg |
步骤9。(可选)当您确信一切正常后,可以使用以下命令运行"重新获得一些磁盘空间":
1 | brew cleanup postgresql |
…如果你真的很勇敢,你可以用下面的命令删除旧的PostgreSQL数据目录
1 | rm -rf /usr/local/var/postgres9.5/ |
(此答案基于一篇优秀的博客文章https://keita.blog/2016/01/09/homebrew-and-postgresql-9-5/,并添加了一些内容)
如前所述,我刚刚打开了我的Mac上的Postgres应用程序,单击了打开
相信大象:http://postgresapp.com/
这才是真正帮助我的。
1 2 | $ cd /usr/local/var/postgres/ $ rm postmaster.pid |
参考文献:http://alumni.lewagon.org/questions/60
如果您在执行将Postgres升级到新的主要版本(f.ex
@dmitrygusev's fix from https://github.com/Homebrew/homebrew/issues/35240
Following official [Postgresql] migration guide helped:
1
2
3
4
5
6
7 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 outputfileThat's all. Check if import went well, then delete backups:
1
2 rm outputfile
rm -Rf /usr/local/var/postgres.old
这里的问题是,在Postgres的主要版本升级中,需要重新创建/迁移数据库。可能还有
另请参见:如何在不丢失数据的情况下将PostgreSQL从版本9.5升级到版本9.6?
如果您不使用自制啤酒,还可以使用其他一些技巧:
如何手动停止PG服务器:
如何手动启动PG服务器:
找到您的postgres文件,它可能在
将
1 | rake db:create db:migrate |
我在osx movaje上更新了mac之后也遇到了同样的问题。
我找到了这个解决方案:
首先尝试终端中的以下命令行:
1 | brew services restart postgresql |
如果没有变化:
1 | ps aux | grep postgres |
如果仍然没有变化:
1 | ls -ls | grep post |
最后一个修复它的命令是,通过从根目录执行来删除postgres锁文件:
1 | rm /usr/local/var/postgres/postmaster.pid |
然后:
1 | brew services restart postgresql |
来自Berziiii:https://github.com/ga-wdi-boston/capstone-project/issues/325
希望能有所帮助:)
当做!!
我也遇到了同样的问题,这个解释为我解决了这个问题:http://blog.55minutes.com/2013/09/postgresql-93-brew-upgrade/
关键步骤是查看my/usr/local/var/postgres/server.log的尾部,这让我明白了真正的问题是什么,我还没有完全完成PostgreSQL的升级过程。
肯定是克里斯·斯莱德的回答帮助了我。
如果有用的话,我写了一个小脚本来终止剩下的进程:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | 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 } |
使用Postgres应用程序的Mac用户可能希望打开该应用程序(聚光灯搜索Postgres或在菜单栏中找到大象图标)。其中,您可能会看到一个带有消息"stale postmaster.pid file"的红色X。不幸的是,聚光灯搜索不会显示此文件的位置。单击"服务器设置…",然后在打开的对话框中,单击"显示"按钮打开数据目录。在中导航一个文件夹(对我来说是"var-10"),然后删除
返回Postgres应用程序并单击开始按钮。那个红色的X应该变成一个绿色的复选标记,并显示"正在运行"。现在,您应该能够在终端中成功地运行像
我在生产方面也遇到了同样的问题(开发方面的每一件事都有效)。在我的例子中,DB服务器与应用程序不在同一台机器上,所以最后的工作就是通过编写以下内容进行迁移:
1 | bundle exec rake db:migrate RAILS_ENV=production |
然后重启服务器,一切正常。
我刚执行了这个命令一切又开始了。
我也有同样的问题。我检查了
我知道这很晚了,但可能会对某人有所帮助。我也有同样的问题。结果发现我有两个版本的Postgres9.1和9.5。我卸载了9.1和9.5,再次安装了9.5,这对我很有用。
你可能重新启动了电脑,忘记启动Postgres应用程序。
我的问题出现在application.yml文件中。我在
我刚刚遇到了这个问题,所有建议的解决方案都不适合我。经过大量的谷歌搜索,我确实找到了一个解决方案。这就是我的工作。
首先,我必须运行这个命令来启动服务器,我猜应该设置配置文件的位置。
1 | pg_ctl -D /usr/local/var/postgres start && brew services start postgresql |
然后我运行这个命令来访问Postgres
1 | psql postgres |
在postgres提示下,我输入了"du"来列出角色
1 | postgres=# \du |
postgres角色丢失,所以我必须用这个命令创建它
1 | CREATE ROLE POSTGRES WITH SUPERUSER CREATEDB CREATEUSER CREATEROLE REPLICATION BYPASSRLS ; |
这解决了我的问题,我希望这能帮助别人。
在跟踪一个
我停止了Rails服务器,运行
您不必删除
选择权?简单地说,
然后重启Postgres服务器,你就可以走了!
实现这一目标的步骤如下:
找到并打开
复制pid-它是