2012-10-05 64 views
2
$ vi database.yml 
(Full database.yml contents) 
development: 
    encoding: unicode 
    adapter: postgresql 
    username: someuser 
    pool: 10 
    port: 5432 
    host: 10.55.333.222 <This is not a real IP address> 
    database: myrailsapp 
    password: mypassword 
    min_messages: WARNING 

$ RAILS_ENV=development rake db:migrate <br /> 
(in /var/www/dress_rails_app) <br /> 
rake aborted! <br /> 
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? <br /> 

Tasks: TOP => db:migrate => environment <br /> 
(See full trace by running task with --trace) <br /> 

我沒有試圖連接到(127.0.0.1/localhost)。我試圖連接到遠程主機,但我的database.yml被忽略。我試圖連接到postgresql遠程主機,但我的database.yml被忽略,我的ruby應用程序繼續嘗試連接到本地主機。紅寶石沒有讀取database.yml文件

以下是完整的堆棧跟蹤:

(in /var/www/dress_rails_app) 
** Invoke db:migrate (first_time) 
** Invoke environment (first_time) 
** Execute environment 
rake aborted! 
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? 
/var/lib/gems/1.9.1/gems/activerecord-3.2.6/lib/active_record/connection_adapters/postgresql_adapter.rb:1206:in `initialize' 
/var/lib/gems/1.9.1/gems/activerecord-3.2.6/lib/active_record/connection_adapters/postgresql_adapter.rb:1206:in `new' 
/var/lib/gems/1.9.1/gems/activerecord-3.2.6/lib/active_record/connection_adapters/postgresql_adapter.rb:1206:in `connect' 
/var/lib/gems/1.9.1/gems/activerecord-3.2.6/lib/active_record/connection_adapters/postgresql_adapter.rb:329:in `initialize' 
/var/lib/gems/1.9.1/gems/activerecord-3.2.6/lib/active_record/connection_adapters/postgresql_adapter.rb:28:in `new' 
/var/lib/gems/1.9.1/gems/activerecord-3.2.6/lib/active_record/connection_adapters/postgresql_adapter.rb:28:in `postgresql_connection' 
/var/lib/gems/1.9.1/gems/activerecord-3.2.6/lib/active_record/connection_adapters/abstract/connection_pool.rb:309:in `new_connection' 
/var/lib/gems/1.9.1/gems/activerecord-3.2.6/lib/active_record/connection_adapters/abstract/connection_pool.rb:319:in `checkout_new_connection' 
/var/lib/gems/1.9.1/gems/activerecord-3.2.6/lib/active_record/connection_adapters/abstract/connection_pool.rb:241:in `block (2 levels) in checkout' 
/var/lib/gems/1.9.1/gems/activerecord-3.2.6/lib/active_record/connection_adapters/abstract/connection_pool.rb:236:in `loop' 
/var/lib/gems/1.9.1/gems/activerecord-3.2.6/lib/active_record/connection_adapters/abstract/connection_pool.rb:236:in `block in checkout' 
/usr/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize' 
/var/lib/gems/1.9.1/gems/activerecord-3.2.6/lib/active_record/connection_adapters/abstract/connection_pool.rb:233:in `checkout' 
/var/lib/gems/1.9.1/gems/activerecord-3.2.6/lib/active_record/connection_adapters/abstract/connection_pool.rb:96:in `block in connection' 
/usr/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize' 
/var/lib/gems/1.9.1/gems/activerecord-3.2.6/lib/active_record/connection_adapters/abstract/connection_pool.rb:95:in `connection' 
/var/lib/gems/1.9.1/gems/activerecord-3.2.6/lib/active_record/connection_adapters/abstract/connection_pool.rb:404:in `retrieve_connection' 
/var/lib/gems/1.9.1/gems/activerecord-3.2.6/lib/active_record/connection_adapters/abstract/connection_specification.rb:168:in `retrieve_connection' 
/var/lib/gems/1.9.1/gems/activerecord-3.2.6/lib/active_record/connection_adapters/abstract/connection_specification.rb:142:in `connection' 
/var/lib/gems/1.9.1/gems/activerecord-3.2.6/lib/active_record/model_schema.rb:308:in `clear_cache!' 
/var/lib/gems/1.9.1/gems/activerecord-3.2.6/lib/active_record/railtie.rb:97:in `block (2 levels) in <class:Railtie>' 
/var/lib/gems/1.9.1/gems/activesupport-3.2.6/lib/active_support/callbacks.rb:418:in `_run__486199626554910505__prepare__4301182059246596778__callbacks' 
/var/lib/gems/1.9.1/gems/activesupport-3.2.6/lib/active_support/callbacks.rb:405:in `__run_callback' 
/var/lib/gems/1.9.1/gems/activesupport-3.2.6/lib/active_support/callbacks.rb:385:in `_run_prepare_callbacks' 
/var/lib/gems/1.9.1/gems/activesupport-3.2.6/lib/active_support/callbacks.rb:81:in `run_callbacks' 
/var/lib/gems/1.9.1/gems/actionpack-3.2.6/lib/action_dispatch/middleware/reloader.rb:74:in `prepare!' 
/var/lib/gems/1.9.1/gems/actionpack-3.2.6/lib/action_dispatch/middleware/reloader.rb:48:in `prepare!' 
/var/lib/gems/1.9.1/gems/railties-3.2.6/lib/rails/application/finisher.rb:47:in `block in <module:Finisher>' 
/var/lib/gems/1.9.1/gems/railties-3.2.6/lib/rails/initializable.rb:30:in `instance_exec' 
/var/lib/gems/1.9.1/gems/railties-3.2.6/lib/rails/initializable.rb:30:in `run' 
/var/lib/gems/1.9.1/gems/railties-3.2.6/lib/rails/initializable.rb:55:in `block in run_initializers' 
/var/lib/gems/1.9.1/gems/railties-3.2.6/lib/rails/initializable.rb:54:in `each' 
/var/lib/gems/1.9.1/gems/railties-3.2.6/lib/rails/initializable.rb:54:in `run_initializers' 
/var/lib/gems/1.9.1/gems/railties-3.2.6/lib/rails/application.rb:136:in `initialize!' 
/var/lib/gems/1.9.1/gems/railties-3.2.6/lib/rails/railtie/configurable.rb:30:in `method_missing' 
/var/www/dress_rails_app/config/environment.rb:5:in `<top (required)>' 
/var/lib/gems/1.9.1/gems/activesupport-3.2.6/lib/active_support/dependencies.rb:251:in `require' 
/var/lib/gems/1.9.1/gems/activesupport-3.2.6/lib/active_support/dependencies.rb:251:in `block in require' 
/var/lib/gems/1.9.1/gems/activesupport-3.2.6/lib/active_support/dependencies.rb:236:in `load_dependency' 
/var/lib/gems/1.9.1/gems/activesupport-3.2.6/lib/active_support/dependencies.rb:251:in `require' 
/var/lib/gems/1.9.1/gems/railties-3.2.6/lib/rails/application.rb:103:in `require_environment!' 
/var/lib/gems/1.9.1/gems/railties-3.2.6/lib/rails/application.rb:292:in `block (2 levels) in initialize_tasks' 
/var/lib/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:205:in `call' 
/var/lib/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:205:in `block in execute' 
/var/lib/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:200:in `each' 
/var/lib/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:200:in `execute' 
/var/lib/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:158:in `block in invoke_with_call_chain' 
/usr/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize' 
/var/lib/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:151:in `invoke_with_call_chain' 
/var/lib/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:176:in `block in invoke_prerequisites' 
/var/lib/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:174:in `each' 
/var/lib/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:174:in `invoke_prerequisites' 
/var/lib/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:157:in `block in invoke_with_call_chain' 
/usr/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize' 
/var/lib/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:151:in `invoke_with_call_chain' 
/var/lib/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:144:in `invoke' 
/var/lib/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:116:in `invoke_task' 
/var/lib/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:94:in `block (2 levels) in top_level' 
/var/lib/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:94:in `each' 
/var/lib/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:94:in `block in top_level' 
/var/lib/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:133:in `standard_exception_handling' 
/var/lib/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:88:in `top_level' 
/var/lib/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:66:in `block in run' 
/var/lib/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:133:in `standard_exception_handling' 
/var/lib/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:63:in `run' 
/var/lib/gems/1.9.1/gems/rake-0.9.2.2/bin/rake:33:in `<top (required)>' 
/usr/local/bin/rake:19:in `load' 
/usr/local/bin/rake:19:in `<main>' 
Tasks: TOP => db:migrate => environment 

這從database.yml文件驗證YAML輸出:

$ irb 
irb(main):001:0> require 'yaml' 
=> true 
irb(main):002:0> db_yaml = YAML.load_file('/var/www/dress_rails_app/config/database.yml') 
=> {"development"=>{"encoding"=>"unicode", "adapter"=>"postgresql", "pool"=>10, "port"=>5432, "username"=>"someuser", "database"=>"dress_rails_app", "password"=>"somepassword", "host"=>"10.4.66.18"}} 
irb(main):003:0> puts db_yaml.inspect 
{"development"=>{"encoding"=>"unicode", "adapter"=>"postgresql", "pool"=>10, "port"=>5432, "username"=>"someuser", "database"=>"dress_rails_app", "password"=>"somepassword", "host"=>"10.4.66.18"}} 
=> nil 
+0

很難說你的部分和編輯的database.yml,但它似乎是閱讀它,因爲它試圖連接到指定的端口,而不是默認MySQL端口。你可以發佈完整的database.yml文件(IP地址和密碼,如果需要編輯)? – Thilo

+0

@Thilo,即完整的database.yml,但是,ruby忽略了該文件並試圖連接本地主機而不是遠程主機。 – doctorjnupe

+0

@Thilo,這也是postgres不是MySQL。 – doctorjnupe

回答

2

的database.yml中看起來是正確的,但事情我會嘗試驗證它是。

驗證YML有效

require 'yaml' 
db_yaml = YAML.load_file('/path/to/database.yml') 
puts db_yaml.inspect 

,以確保您可以讀取/解析它,有沒有錯誤的標籤等。在那裏。我幾乎在我的舞臺服務器上使用相同的配置,並且它按預期工作

staging: 
    adapter: postgresql 
    database: staging_db 
    username: doon 
    password: my_password 
    host: 172.20.0.99 
+0

我驗證了YAML是正確的。請看上面的結果。 – doctorjnupe

+0

檢查文件的權限?確保初始化程序中沒有任何東西與它混淆?刪除池和其他語句,因此它是在最低配置下)。很抱歉沒有想法。 – Doon

+0

感謝您的全力幫助。我完全被這個難住了。你所有的想法都很紮實,但都沒有成功。該應用程序正在讀取yaml文件,但由於某種原因它嘗試連接到本地主機而不是遠程IP。虛幻。我從來沒有見過這樣的事情。 – doctorjnupe

0

我有完全相同的問題。

在activerecord中調試postgresql_adapter後 - 我找到了解決方案。
裏面的database.yml,只需更換host: <ip address>
hostname: <ip address>