【问题标题】:HOw to fix bundler issue: You have already activated mysql 2.7, but your Gemfile requires mysql 2.8.1. Consider using bundle exec如何解决捆绑程序问题:您已经激活了 mysql 2.7,但您的 Gemfile 需要 mysql 2.8.1。考虑使用 bundle exec
【发布时间】:2011-09-02 20:19:39
【问题描述】:

在我将 rails 2.2.2 应用程序部署到生产环境后,我收到以下错误: "您已经激活了 mysql 2.7,但是您的 Gemfile 需要 mysql 2.8.1。考虑使用 bundle exec"

Gemfile 有正确的信息。我该如何解决这个问题?

更新 我想使用gem 'mysql', '2.8.1',但不知何故对我不起作用。这是我在服务器 gem 列表中的内容:

....
libxml-ruby (1.1.3)
memcache-client (1.6.3)
mysql (2.7)
net-scp (1.0.2)
net-sftp (2.0.2)
net-ssh (2.0.11)
....

这是我的 Gemfile 的样子:

require 'rubygems'
source 'http://rubygems.org'
source 'http://gemcutter.org'
source 'http://gems.github.com'
gem 'rails', '2.2.2'
gem 'hpricot', '0.6.0'
gem "composite_primary_keys", '2.2.0'
gem 'javan-whenever', '0.3.7'
gem 'mysql', '2.7' ** earlier I was trying with 2.8.1 then used 2.7 and it worked**
gem 'activerecord-oracle_enhanced-adapter', '1.1.9'
gem 'ruby-oci8', '1.0.3'
gem 'crypto', '0.0.3'
gem 'rack', '1.0.0'
gem 'mechanize', '1.0.0'

group :test do
  gem 'mocha', '0.9.5'
  gem 'rspec',             '1.3.1', :require => 'spec'
  gem 'rspec-rails',       '1.3.3'
end

group :cruise do
  gem 'metric_fu', '1.5.1'
end

【问题讨论】:

  • 当我遇到这个问题时,几乎总是因为我的代码中有一些需要'mysql'。你的应用中有这样的声明吗?
  • @mosch 我在代码中的任何地方都没有 require 'mysql',除了它在 mysql-2.8.1/test/test_mysql.rb 中。所以不确定这是不是错误,但是一旦我将 Gemfile 更改为使用 mysql 2.7,它就起作用了。 mysql-2.7 没有 test 文件夹,所以没有 require 'mysql'
  • 我明白了,我假设你需要 mysql 2.8.1。

标签: ruby-on-rails bundler


【解决方案1】:

尝试在 Gemfile 中显式设置 mysql 版本:gem "mysql", "2.7"

【讨论】:

  • 这对我来说真的很有效。但理想情况下我应该能够使用 mysql 2.8.1
  • 很高兴为您提供帮助。让我与您分享一些经验:我从事的项目很多,并且总是出现 gem 依赖 :) 所以我和我的同事开始在 Gemfiles 中明确设置 gem 版本。比如rails 3.0.5我们用mysql2 2.0.6,因为后面的版本有问题。因此,只需明确设置您最喜欢的 gem 的工作版本,一切都会好的)
  • 这就是它看起来很烦人的原因。我在 Gemfile 中明确给出了 gem "mysql", '2.8.1' ,即使这样它也给了我这个错误。它应该可以工作的,因为我总是在 Gemfile 中使用确切的版本
【解决方案2】:

您是否尝试卸载2.7 版本,然后安装2.8 版本?我问的原因是我在另一个宝石上遇到了完全相同的错误......事实上就在昨天。我用这些简单地解决了这个问题:

gem uninstall mysql -v 2.7
gem install mysql -v 2.8.1

我相信如果你运行第一个命令然后运行bundle install,你会得到正确的。或者您可以返回并将Gemfile 中的版本字符串更改为您真正想要的版本。

【讨论】:

  • 我想过,但是这个选项对我不起作用,因为服务器上很少有其他应用程序不使用捆绑器,如果我卸载 mysql 2.7 会失败
  • 您是否使用 rvm 来管理您的 gemests/ruby 版本?如果不是,您应该研究一下——您可以轻松地隔离使用不同 gemset 甚至不同版本的 ruby​​ 的项目。
  • 是的好主意,我们正在尝试将项目转移到 rvm 和 bundler,但是这个过程需要一些时间,但绝对是我们的目标。
  • 我周末花了很多时间在家“练习”设置 rvm 并创建使用它的项目。经过几次尝试,我已经相当有能力进行设置了。这绝对是值得的痛苦......
猜你喜欢
  • 2011-11-26
  • 2011-11-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-30
  • 1970-01-01
  • 2017-08-29
  • 2011-09-07
相关资源
最近更新 更多