Rails mysql2错误:"rake aborted!请安装mysql2适配器..."

4

我正在运行在Windows 7 (64位)机器上。我使用一键安装程序安装了RoR。我已更新我的 database.yml 文件以使用 mysql2:

development:
  adapter: mysql2
  encoding: utf8
  database: blog_development
  pool: 5
  username: root
  password: 
  socket: /tmp/mysql.sock
test:
  adapter: mysql2
  encoding: utf8
  database: blog_test
  pool: 5
  username: root
  password: 
  socket: /tmp/mysql.sock

production:
  adapter: mysql2
  encoding: utf8
  database: blog_production
  pool: 5
  username: root
  password: 
  socket: /tmp/mysql.sock

我按照教程视频的指导,在我的Gemfile文件中添加了这一行:

gem 'mysql2', :group => :production

然后:

gem install mysql2

成功后,然后:
bundle install

这也是成功的,但是mysql2没有列出。

然后:

rake db:create

出现了以下错误:

"rake 中止! 请安装 mysql2 适配器:gem install activerecord-mysql2-adapter(mysql2 不在 bundle 中。将其添加到 Gemfile。) 任务:TOP => db:create (使用 --trace 运行任务以查看完整跟踪。)"

bundle show mysql2

出现了这个错误:"当前bundle中找不到gem 'mysql2'"。

我缺少什么来让mysql2正常运行?


1
你是在“生产”环境中运行所有这些吗? - jnevelson
3个回答

2

前往您的应用程序

  1. 打开Gemfile文件
  2. 添加以下内容:

    gem 'mysql2'


将此与上面的答案结合起来,你就得到了它。 - Brad Orego

2
在运行rake db:create之前(在gem install mysql2之后),请先运行bundle install。请注意保留HTML标签。

我编辑了我的问题,但是我忘记提到我也做了这个。即使执行了bundle install,它仍然无法正常工作 - mysql2未列在bundle install命令的输出中。 - alexD
1
嗯,重启后再确认一遍。另外,既然您在所有环境中都使用mysql,那么尝试移除:group => :production参数怎么样? - Michael Durrant
我认为问题出在 :group => :production 参数上。 - alexD

1

在我创建libmysql.lib文件https://github.com/brianmario/mysql2/issues/486并将其用于安装/编译本地gem(lib位于用于“--with-mysql-lib =“$ mysql top_path / lib” gem安装的目录中)之后,类似问题得到了解决。

  • 将libmysql.dll放入ruby_top bin文件夹
  • 安装mysql和mysql2两个gems(仅安装mysql2 gem时会出现完全相同的错误,尽管database.yml中的“adapter = mysql2”已经正确设置)。

在执行“bundle install”命令后,mysql2出现在gems列表中,我能够成功运行“rake db:create”,在webrick上启动了x64 windows上的x64 ruby 2.0和x64 mysql的redmine,继续在某些生产服务器上进行配置。

===============

更新

我需要澄清一下,除了安装mysql和mysql2之外,我还在redmine应用程序的顶层目录中创建了Gemfile.local文件,这可能是使用bundler的技巧。因此,我建议将最后一步替换为:

  • 安装mysql2 gem
  • 在应用程序顶级目录中创建Gemfile.local文件,在其中列出要包含到bundle的本地gems。

我看到另一个答案建议将mysql2 gem添加到Gemfile中,但对我来说,mysql2已经包含在Gemfile中了,但只有在添加到Gemfile.local后才出现在bundler输出中。

如果我错了,而mysql gem和mysql2一起安装完成,则将这两个解决方案都保留,不幸的是,我现在无法完全删除/重新安装以进行测试,我将在能够这样做时进行更新,希望这些内容可以为某些人节省时间。

我的Gemfile.local文件内容如下:

---8<---

gem "mysql2", "~> 0.3.11"

gem "eventmachine"

gem "thin"

---8<---


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接