2013-01-25 52 views
0

我似乎無法在heroku上解決上述錯誤。我在本地運行mysql2 gem的rails 3很好,但是在移動到heroku時似乎中斷了。Heroku數據庫配置指定不存在的mysql適配器

首先,我正在使用ClearDB。

其次,當我部署並嘗試運行heroku run rake db:migrate時,heroku告訴我需要添加mysql gem和activerecord-mysql-adapter。爲什麼在我使用mysql2時會發生這種情況?

第三,當我將mysql和適配器添加到我的項目中時,我經歷了heroku問題,告訴我我需要這些項目中的寶石。於是,我再次運行rake db:migrate,而且,現在我得到不同的錯誤...

rake aborted! 
database configuration specifies nonexistent mysql adapter 
/app/vendor/bundle/ruby/1.9.1/gems/activerecord-3.2.9/lib/active_record/connection_adapters/abstract/connection_specification.rb:133:in `establish_connection' 
/app/vendor/bundle/ruby/1.9.1/gems/activerecord-3.2.9/lib/active_record/railtie.rb:82:in `block (2 levels) in <class:Railtie>' 
/app/vendor/bundle/ruby/1.9.1/gems/activesupport-3.2.9/lib/active_support/lazy_load_hooks.rb:36:in `instance_eval' 
/app/vendor/bundle/ruby/1.9.1/gems/activesupport-3.2.9/lib/active_support/lazy_load_hooks.rb:36:in `execute_hook' 
/app/vendor/bundle/ruby/1.9.1/gems/activesupport-3.2.9/lib/active_support/lazy_load_hooks.rb:26:in `block in on_load' 
/app/vendor/bundle/ruby/1.9.1/gems/activesupport-3.2.9/lib/active_support/lazy_load_hooks.rb:25:in `each' 
/app/vendor/bundle/ruby/1.9.1/gems/activesupport-3.2.9/lib/active_support/lazy_load_hooks.rb:25:in `on_load' 
/app/vendor/bundle/ruby/1.9.1/gems/activerecord-3.2.9/lib/active_record/railtie.rb:74:in `block in <class:Railtie>' 
/app/vendor/bundle/ruby/1.9.1/gems/railties-3.2.9/lib/rails/initializable.rb:30:in `instance_exec' 
/app/vendor/bundle/ruby/1.9.1/gems/railties-3.2.9/lib/rails/initializable.rb:30:in `run' 
/app/vendor/bundle/ruby/1.9.1/gems/railties-3.2.9/lib/rails/initializable.rb:55:in `block in run_initializers' 
/app/vendor/bundle/ruby/1.9.1/gems/railties-3.2.9/lib/rails/initializable.rb:54:in `each' 
/app/vendor/bundle/ruby/1.9.1/gems/railties-3.2.9/lib/rails/initializable.rb:54:in `run_initializers' 
/app/vendor/bundle/ruby/1.9.1/gems/railties-3.2.9/lib/rails/application.rb:136:in `initialize!' 
/app/vendor/bundle/ruby/1.9.1/gems/railties-3.2.9/lib/rails/railtie/configurable.rb:30:in `method_missing' 
/app/config/environment.rb:5:in `<top (required)>' 
/app/vendor/bundle/ruby/1.9.1/gems/activesupport-3.2.9/lib/active_support/dependencies.rb:251:in `require' 
/app/vendor/bundle/ruby/1.9.1/gems/activesupport-3.2.9/lib/active_support/dependencies.rb:251:in `block in require' 
/app/vendor/bundle/ruby/1.9.1/gems/activesupport-3.2.9/lib/active_support/dependencies.rb:236:in `load_dependency' 
/app/vendor/bundle/ruby/1.9.1/gems/activesupport-3.2.9/lib/active_support/dependencies.rb:251:in `require' 
/app/vendor/bundle/ruby/1.9.1/gems/railties-3.2.9/lib/rails/application.rb:103:in `require_environment!' 
/app/vendor/bundle/ruby/1.9.1/gems/railties-3.2.9/lib/rails/application.rb:297:in `block (2 levels) in initialize_tasks' 

當我檢查出我database.yml,我看到的Heroku注入的PostgreSQL的適配器,但錯誤outputed明確規定的MySQL。 ..如果有人能夠幫助我解決這個問題,我會非常感激。我不知道如何處理heroku ...

回答

-1

Heroku使用Postgresql。

你可以在開發/測試環境中使用mysql2,在生產環境中使用postgresql(即在Heroku上)。

group :development, :test do 
    gem 'mysql2' 
end 

group :production do 
    gem 'pg' 
end 
+0

有mysql服務可以插入... –

5

Heroku注入postgresql是因爲您未能指定heroku配置屬性DATABASE_URL。

我給詳細說明在這個崗位 - https://stackoverflow.com/a/17815729/1626020

但簡而言之,你需要使用這樣的設置是:

heroku config:set DATABASE_URL=mysql2://bb06ca765fb123:[email protected]/heroku_703eded6aebc123?reconnect=true 

記住你的database.yml完全被忽略的Heroku。沒錯,忽視。 DATABASE_URL是重要的。

+0

'mysql2://'是解決方案,默認情況下cleardb使用'mysql://' –

相關問題