2017-08-04 94 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

相关问题