Windows环境下Rails应用切换PostgreSQL后db:migrate执行失败
解决Rails迁移时PG::ConnectionBad连接拒绝问题
从你提供的db:migrate --trace日志来看,核心错误是PostgreSQL服务器未运行,或者没有配置为接受localhost的TCP连接,导致Rails无法建立数据库连接。下面是一步步的排查和解决方法:
1. 确认PostgreSQL服务正在运行(Windows环境)
因为你的命令行路径是Windows系统,先检查服务状态:
- 按下
Win + R,输入services.msc回车打开服务管理器 - 在列表中找到PostgreSQL相关服务(名称通常是
postgresql-x64-[版本号],比如postgresql-x64-15) - 如果服务状态不是「正在运行」,右键点击选择「启动」;建议设置启动类型为「自动」,避免每次开机都手动启动
2. 验证PostgreSQL是否监听5432端口
打开命令提示符,执行以下命令:
netstat -ano | findstr :5432
如果没有返回任何结果,说明PostgreSQL没有监听5432端口,需要修改配置:
- 找到PostgreSQL安装目录下的
data/postgresql.conf文件(通常在C:\Program Files\PostgreSQL\[版本号]\data) - 找到
listen_addresses配置项,修改为:
或者允许所有地址访问:listen_addresses = 'localhost'listen_addresses = '*' - 确认
port = 5432这一行没有被注释,端口号和Rails配置一致 - 保存文件后,重启PostgreSQL服务
3. 检查Rails的database.yml配置正确性
确保config/database.yml中的PostgreSQL配置正确,示例如下:
default: &default adapter: postgresql encoding: unicode pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> host: localhost port: 5432 username: postgres # 默认PostgreSQL用户名是postgres password: your_postgres_password # 替换为你的PostgreSQL密码 development: <<: *default database: order_management_development
注意:要提前创建对应的数据库,可以用命令createdb order_management_development,或者通过pgAdmin图形工具创建。
4. 直接测试PostgreSQL连接
用psql命令直接测试连接,排除Rails配置问题:
psql -h localhost -p 5432 -U postgres
如果能成功进入PostgreSQL命令行,说明连接正常,再重新运行rails db:migrate;如果还是连接失败,回到步骤1和2检查服务和端口配置。
附:你提供的完整迁移日志
C:\Users\Jaiel\Desktop\Uebung_3_Elias_Kechter_s0555064_SoSe_2018_AI_Web_Entwicklung\order_management>rails db:migrate --trace ** Invoke db:migrate (first_time) ** Invoke environment (first_time) ** Execute environment ** Invoke db:load_config (first_time) ** Execute db:load_config ** Execute db:migrate rails aborted! PG::ConnectionBad: could not connect to server: Connection refused (0x0000274D/10061) Is the server running on host "localhost" (::1) and accepting TCP/IP connections on port 5432? could not connect to server: Connection refused (0x0000274D/10061) Is the server running on host "localhost" (127.0.0.1) and accepting TCP/IP connections on port 5432? C:/RailsInstaller/Ruby2.3.3/lib/ruby/gems/2.3.0/gems/pg-1.0.0-x86-mingw32/lib/pg.rb:56:in `initialize' C:/RailsInstaller/Ruby2.3.3/lib/ruby/gems/2.3.0/gems/pg-1.0.0-x86-mingw32/lib/pg.rb:56:in `new' C:/RailsInstaller/Ruby2.3.3/lib/ruby/gems/2.3.0/gems/pg-1.0.0-x86-mingw32/lib/pg.rb:56:in `connect' C:/RailsInstaller/Ruby2.3.3/lib/ruby/gems/2.3.0/gems/activerecord-5.1.6/lib/active_record/connection_adapters/postgresql_adapter.rb:697:in `connect' C:/RailsInstaller/Ruby2.3.3/lib/ruby/gems/2.3.0/gems/activerecord-5.1.6/lib/active_record/connection_adapters/postgresql_adapter.rb:221:in `initialize' C:/RailsInstaller/Ruby2.3.3/lib/ruby/gems/2.3.0/gems/activerecord-5.1.6/lib/active_record/connection_adapters/postgresql_adapter.rb:38:in `new' C:/RailsInstaller/Ruby2.3.3/lib/ruby/gems/2.3.0/gems/activerecord-5.1.6/lib/active_record/connection_adapters/postgresql_adapter.rb:38:in `postgresql_connection' C:/RailsInstaller/Ruby2.3.3/lib/ruby/gems/2.3.0/gems/activerecord-5.1.6/lib/active_record/connection_adapters/abstract/connection_pool.rb:759:in `new_connection' C:/RailsInstaller/Ruby2.3.3/lib/ruby/gems/2.3.0/gems/activerecord-5.1.6/lib/active_record/connection_adapters/abstract/connection_pool.rb:803:in `checkout_new_connection' C:/RailsInstaller/Ruby2.3.3/lib/ruby/gems/2.3.0/gems/activerecord-5.1.6/lib/active_record/connection_adapters/abstract/connection_pool.rb:782:in `try_to_checkout_new_connection' C:/RailsInstaller/Ruby2.3.3/lib/ruby/gems/2.3.0/gems/activerecord-5.1.6/lib/active_record/connection_adapters/abstract/connection_pool.rb:743:in `acquire_connection' C:/RailsInstaller/Ruby2.3.3/lib/ruby/gems/2.3.0/gems/activerecord-5.1.6/lib/active_record/connection_adapters/abstract/connection_pool.rb:500:in `checkout' C:/RailsInstaller/Ruby2.3.3/lib/ruby/gems/2.3.0/gems/activerecord-5.1.6/lib/active_record/connection_adapters/abstract/connection_pool.rb:374:in `connection' C:/RailsInstaller/Ruby2.3.3/lib/ruby/gems/2.3.0/gems/activerecord-5.1.6/lib/active_record/connection_adapters/abstract/connection_pool.rb:931:in `retrieve_connection' C:/RailsInstaller/Ruby2.3.3/lib/ruby/gems/2.3.0/gems/activerecord-5.1.6/lib/active_record/connection_handling.rb:116:in `retrieve_connection' C:/RailsInstaller/Ruby2.3.3/lib/ruby/gems/2.3.0/gems/activerecord-5.1.6/lib/active_record/connection_handling.rb:88:in `connection' C:/RailsInstaller/Ruby2.3.3/lib/ruby/gems/2.3.0/gems/activerecord-5.1.6/lib/active_record/schema_migration.rb:20:in `table_exists?' C:/RailsInstaller/Ruby2.3.3/lib/ruby/gems/2.3.0/gems/activerecord-5.1.6/lib/active_record/schema_migration.rb:24:in `create_table' C:/RailsInstaller/Ruby2.3.3/lib/ruby/gems/2.3.0/gems/activerecord-5.1.6/lib/active_record/migration.rb:1125:in `initialize' C:/RailsInstaller/Ruby2.3.3/lib/ruby/gems/2.3.0/gems/activerecord-5.1.6/lib/active_record/migration.rb:1007:in `new' C:/RailsInstaller/Ruby2.3.3/lib/ruby/gems/2.3.0/gems/activerecord-5.1.6/lib/active_record/migration.rb:1007:in `up' C:/RailsInstaller/Ruby2.3.3/lib/ruby/gems/2.3.0/gems/activerecord-5.1.6/lib/active_record/migration.rb:985:in `migrate' C:/RailsInstaller/Ruby2.3.3/lib/ruby/gems/2.3.0/gems/activerecord-5.1.6/lib/active_record/tasks/database_tasks.rb:171:in `migrate' C:/RailsInstaller/Ruby2.3.3/lib/ruby/gems/2.3.0/gems/activerecord-5.1.6/lib/active_record/railties/databases.rake:58:in `block (2 levels) in <top (required)>' C:/RailsInstaller/Ruby2.3.3/lib/ruby/gems/2.3.0/gems/rake-12.3.1/lib/rake/task.rb:271:in `block in execute' C:/RailsInstaller/Ruby2.3.3/lib/ruby/gems/2.3.0/gems/rake-12.3.1/lib/rake/task.rb:271:in `each' C:/RailsInstaller/Ruby2.3.3/lib/ruby/gems/2.3.0/gems/rake-12.3.1/lib/rake/task.rb:271:in `execute' C:/RailsInstaller/Ruby2.3.3/lib/ruby/gems/2.3.0/gems/rake-12.3.1/lib/rake/task.rb:213:in `block in invoke_with_call_chain' C:/RailsInstaller/Ruby2.3.3/lib/ruby/2.3.0/monitor.rb:214:in `mon_synchronize' C:/RailsInstaller/Ruby2.3.3/lib/ruby/gems/2.3.0/gems/rake-12.3.1/lib/rake/task.rb:193:in `invoke_with_call_chain' C:/RailsInstaller/Ruby2.3.3/lib/ruby/gems/2.3.0/gems/rake-12.3.1/lib/rake/task.rb:182:in `invoke' C:/RailsInstaller/Ruby2.3.3/lib/
内容的提问来源于stack exchange,提问作者Ilja KO
相关产品推荐
相关产品推荐

