“请安装mysql2适配器”

时间:2013-02-01 04:21:29

标签: ruby gem bundler redmine mysql2

我正试图遵循这个Redmine setup tutorial。当我到达启动服务器的位置时,我输入sudo rails server并收到以下错误:

Please install the mysql2 adapter: `gem install activerecord-mysql2-adapter` (mysql2 is not part of the bundle. Add it to Gemfile.) (LoadError)

我的Gemfile的相关部分是:

....
if File.exist?(database_file)
database_config = YAML::load(ERB.new(IO.read(database_file)).result)
adapters = database_config.values.map {|c| c['adapter']}.compact.uniq
if adapters.any?
  adapters.each do |adapter|
    case adapter
    when /mysql/
      gem "mysql", "~> 2.8.1", :platforms => [:mri_18, :mingw_18]
      gem "mysql2", "~> 0.3.11", :platforms => [:mri_19, :mingw_19]
      gem "activerecord-jdbcmysql-adapter", :platforms => :jruby
...

和Gemfile.lock包含mysql2:

...
multi_json (1.5.0)
mysql (2.8.1)
mysql2 (0.3.11)
net-ldap (0.3.1)
...

我的database.yml文件包含以下内容:

...
production:
  adapter: mysql2
  database: redmine
  host: localhost
  username: ****
  password: ****

development:
  adapter: mysql2
  database: redmine_development
  host: localhost
  username: ****
  password: ****
  encoding: utf8
...

运行bundle install似乎成功,但输出中未列出mysql2,which mysql2不返回任何内容,bundle show mysql2返回Could not find gem 'mysql2' in the current bundle.

我已经卸载并重新安装了mysql2 gem,每次都取得了明显的成功。

我已经阅读了其他stackoverflow问题上类似声音问题的描述,但他们的解决方案都没有解决我的问题。

1 个答案:

答案 0 :(得分:2)

如果由mysql2生成的Gemfile.lock文件中未包含bundle,则会出现此错误。虽然Gemfile用于管理依赖项,但锁定文件是rails应用程序实际加载的内容。

这是一个比我之前看到的更详细的Gemfile(我一般不熟悉Redmine) - 这是从哪里来的?它似乎不是来自最新的稳定来源。如果你知道你将使用mysql2,我认为没有任何理由需要你的Gemfile来解析你的数据库配置。无论出于何种原因,它都无法正确读取database.yml文件。

尝试在任何块或循环之外添加gem 'mysql2'并再次运行bundle