2017-08-04 93 views
0

當我做rake db:migrate時,我得到了錯誤,下面我附加了我的databse.yml和我的gem文件,嘗試了互聯網上的所有東西,但錯誤did'nt解決!heroku rake db:migrate在rails中不工作4

rake aborted! 
LoadError: cannot load such file -- mysql2 

development: 
    adapter: mysql2 
    encoding: utf8 
    database: demo_project_development 
    pool: 5 
    username: root 
    password: root 
    socket: /var/run/mysqld/mysqld.sock 
    host: localhost 
test: 
    adapter: mysql2 
    database: demo_project_test 
    database: db/development.mysql2 
    username: root 
    password: root 
    pool: 5 
    timeout: 5000 
production: 
    adapter: postgresql 
    database: demo_project_production 
    pool: 5 
    timeout: 5000 

的Gemfile 源 'https://rubygems.org' 寶石 '軌道', '4.2.6' 寶石 'SASS-軌道', '〜> 5.0' 寶石 'uglifier', '> = 1.3.0' 寶石 '咖啡軌道', '〜> 4.1.0' 寶石 '的jquery-導軌' 寶石 'turbolinks' 寶石 '在jbuilder', '〜> 2.0' 寶石 'SDOC',「〜> 0.4.0 ',組::: doc

group :production do 
    gem 'pg', '0.20' 
    gem 'rails_12factor' 
end 

group :test do 
    gem 'byebug' 
    gem 'mysql2', '>= 0.3.13', '< 0.5' 
end 

gem 'spring' 
gem 'devise' 
gem "cancan" 
gem 'ckeditor', '4.1.3' 
gem "nested_form" 
gem "paperclip", "~> 5.0.0" 
gem 'bootstrap-sass', '~> 3.3.6' 
gem 'kaminari' 
gem 'ratyrate' 
gem 'thinking-sphinx', '~> 3.3.0' 
gem 'delayed_job_active_record' 
gem 'rails-api' 
gem 'active_model_serializers', '~> 0.10.6' 
group :development do 
    gem 'web-console', '~> 2.0' 
    gem 'mysql2', '>= 0.3.13', '< 0.5' 
end 

以下是我的application.rb

require File.expand_path('../boot', __FILE__) 
require 'rails/all' 
Bundler.require(*Rails.groups) 
module DemoProject 
    class Application < Rails::Application 
    config.active_record.raise_in_transactional_callbacks = true 
    config.active_job.queue_adapter = :delayed_job 
    config.api_only = false 
    end 
end 

配置/ envoirment.rb

require File.expand_path('../application', __FILE__) 
Rails.application.initialize! 

的boot.rb

ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__) 
require 'bundler/setup' # Set up gems listed in the Gemfile. 
+0

你有沒有MySQL gems添加到你的gemfile?你是否運行軟件包安裝? – bkunzi01

+0

雅我有,我也做了捆綁安裝 – Ali

+0

你在你的機器或heroku得到這個錯誤?你在運行'heroku run rake db:migrate'嗎?據我所知,Heroku不支持mysql,它只支持Postgresql。 – Sajan

回答

0

我能夠重現你的錯誤在一個虛擬的Rails 4.2.6應用與您Gemfiledatabase.yml。我甚至沒有提高LoadError: cannot load such file -- mysql2甚至無法推送應用程序到Heroku。

我通過從開發和測試組中刪除mysql2 gem並將其添加到默認組來解決了該問題。我的猜測是,在本地運行bundle install將它作爲依賴項添加到Gemfile.lock,它被檢入git並推送到Heroku。 Heroku不安裝寶石,當應用程序試圖要求它時,LoadError被引發。

group :test do 
    gem 'byebug' 
end 

group :development do 
    gem 'web-console', '~> 2.0' 
end 

gem 'mysql2', '>= 0.3.13', '< 0.5' 

一對夫婦的注意事項:如果你想一個寶石添加到兩個或兩個以上特定人羣,不單獨指定。這只是意味着有兩個地方你必須記住要改變你的版本依賴關係。因此,而不是這個

group :test do 
    gem 'byebug' 
    gem 'another_gem' 
end 

group :development do 
    gem 'web-console', '~> 2.0' 
    gem 'another_gem' 
end 

做到這一點

group :test do 
    gem 'byebug' 
end 

group :development do 
    gem 'web-console', '~> 2.0' 
end 

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

而且,你不應該在本地生產和PostgreSQL使用MySQL,只需使用Postgres的兩個。它們並不完全兼容,所以你一定會陷入混亂的問題中。對這個問題最好的解決方案是完全刪除mysql2併爲Postgres配置你的開發和測試數據庫。

+0

我固定的空間問題,但仍然得到相同的錯誤 – Ali

+0

提交併推送用'git push heroku master'更改? –

+0

是的,我提交了,並將我的更改推給了主 – Ali

相關問題