我正试图遵循这个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问题上类似声音问题的描述,但他们的解决方案都没有解决我的问题。
答案 0 :(得分:2)
如果由mysql2
生成的Gemfile.lock
文件中未包含bundle
,则会出现此错误。虽然Gemfile用于管理依赖项,但锁定文件是rails应用程序实际加载的内容。
这是一个比我之前看到的更详细的Gemfile(我一般不熟悉Redmine) - 这是从哪里来的?它似乎不是来自最新的稳定来源。如果你知道你将使用mysql2,我认为没有任何理由需要你的Gemfile来解析你的数据库配置。无论出于何种原因,它都无法正确读取database.yml文件。
尝试在任何块或循环之外添加gem 'mysql2'
并再次运行bundle
。