Ruby on Rails - 无法加载此类文件 -- mysql2/2.2/mysql2 (LoadError)
Ruby on Rails - cannot load such file -- mysql2/2.2/mysql2 (LoadError)
我在我的 Rails 项目中使用 SQLite,但是当我听说 Heroku 不支持 SQLite 时,我切换到 MYSQL。
切换我的数据库后,我启动了我的 rails 服务器 "rails s" 但它给了我以下错误:
C:\Sites\simple_cms>rails server
C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/mysql2-0.3.18-x64-mingw32/lib/mysql2/mysql2.rb:2:in `require'
: cannot load such file -- mysql2/2.2/mysql2 (LoadError)
from C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/mysql2-0.3.18-x64-mingw32/lib/mysql2/mysql2.rb:2
:in `<top (required)>'
from C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/mysql2-0.3.18-x64-mingw32/lib/mysql2.rb:31:in `r
equire'
from C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/mysql2-0.3.18-x64-mingw32/lib/mysql2.rb:31:in `<
top (required)>'
from C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/bundler-1.8.4/lib/bundler/runtime.rb:76:in `requ
ire'
from C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/bundler-1.8.4/lib/bundler/runtime.rb:76:in `bloc
k (2 levels) in require'
from C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/bundler-1.8.4/lib/bundler/runtime.rb:72:in `each
'
from C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/bundler-1.8.4/lib/bundler/runtime.rb:72:in `bloc
k in require'
from C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/bundler-1.8.4/lib/bundler/runtime.rb:61:in `each
'
from C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/bundler-1.8.4/lib/bundler/runtime.rb:61:in `requ
ire'
from C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/bundler-1.8.4/lib/bundler.rb:134:in `require'
from C:/Sites/simple_cms/config/application.rb:7:in `<top (required)>'
from C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/railties-4.2.0/lib/rails/commands/commands_tasks
.rb:78:in `require'
from C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/railties-4.2.0/lib/rails/commands/commands_tasks
.rb:78:in `block in server'
from C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/railties-4.2.0/lib/rails/commands/commands_tasks
.rb:75:in `tap'
from C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/railties-4.2.0/lib/rails/commands/commands_tasks
.rb:75:in `server'
from C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/railties-4.2.0/lib/rails/commands/commands_tasks
.rb:39:in `run_command!'
from C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/railties-4.2.0/lib/rails/commands.rb:17:in `<top
(required)>'
from bin/rails:4:in `require'
from bin/rails:4:in `<main>'
这是我的 gemfile:
# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '4.2.0'
# Use mysql as the database for Active Record
gem 'mysql2'
我彻底搜索,找到了一些答案,但没有用。
我将我的 libmysql.dll
文件从 Program Files/MySQL Server 5.6
粘贴到 Ruby/bin
,但仍然没有成功。我执行了以下命令:
gem uninstall mysql2
gem install mysql2 --platform=ruby
我按照本教程进行操作,但仍然遇到相同的错误:Error "...cannot load such file -- mysql2/2.0/mysql2 (LoadError)". On Windows XP with Ruby 2.0.0
如果有人能帮助我,我将不胜感激,这样我就可以将它部署到 Heroku。
谢谢。
从 Ruby 2.1.5 更新到 2.2.1 后,我遇到了同样的问题。问题似乎是 Rails 使用的 mysql2
gem 作为对 libmysql
的绑定。显然它不支持 Ruby 2.2 分支,但只支持 2.0 和 2.1.
我遇到了同样的问题,所以我改用 RubyInstaller。我不再有问题了。
问题是 mysql2
gem 没有安装其本地依赖项。在 Ruby 的早期版本中,这会触发 unable to build native gem extension
错误:
Ruby 2.2
中发生了一些变化,因此您 可以 安装 gem 而无需构建本机扩展。然而,这并不意味着问题已解决 - 因此您必须确保安装具有适当依赖项的 gem。
Download C-Connector from MYSQL(注意您的 Ruby 版本——如果您使用的是 64 位,请下载 64 位版本)
解压缩/安装 MYSQL C-Connector 文件夹到您的硬盘上(路径中不要有任何空格)
运行 以下命令:gem install mysql2 --platform=ruby -- '--with-mysql-dir="C:/your-mysql-connector-path"'
这应该安装gem和它需要的文件
然后你可以从C:/your-mysql-connector-path
复制libmysql.dll
-> c:/your-ruby-install/bin`
此安装与上一个安装的区别在于,此 应该 提及正在安装本机 gem 扩展 (This could take a while
),这表明 Ruby 正在查看图书馆。
这一次,如果安装正确,它应该适合你。
--
如果您仍然看到错误,则必须卸载系统上 mysql2
gem 的任何现有版本:
如果出现错误,您只需键入 gem uninstall mysql2
、select all
,然后重复上述步骤。
在上面的第 3 步中,我不得不使用一对额外的“-”并且路径周围没有引号。
gem install mysql2 -- --with-mysql-dir=C:\mysql-connector-dir
我使用的是 Win 7
我在我的 Rails 项目中使用 SQLite,但是当我听说 Heroku 不支持 SQLite 时,我切换到 MYSQL。
切换我的数据库后,我启动了我的 rails 服务器 "rails s" 但它给了我以下错误:
C:\Sites\simple_cms>rails server
C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/mysql2-0.3.18-x64-mingw32/lib/mysql2/mysql2.rb:2:in `require'
: cannot load such file -- mysql2/2.2/mysql2 (LoadError)
from C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/mysql2-0.3.18-x64-mingw32/lib/mysql2/mysql2.rb:2
:in `<top (required)>'
from C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/mysql2-0.3.18-x64-mingw32/lib/mysql2.rb:31:in `r
equire'
from C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/mysql2-0.3.18-x64-mingw32/lib/mysql2.rb:31:in `<
top (required)>'
from C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/bundler-1.8.4/lib/bundler/runtime.rb:76:in `requ
ire'
from C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/bundler-1.8.4/lib/bundler/runtime.rb:76:in `bloc
k (2 levels) in require'
from C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/bundler-1.8.4/lib/bundler/runtime.rb:72:in `each
'
from C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/bundler-1.8.4/lib/bundler/runtime.rb:72:in `bloc
k in require'
from C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/bundler-1.8.4/lib/bundler/runtime.rb:61:in `each
'
from C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/bundler-1.8.4/lib/bundler/runtime.rb:61:in `requ
ire'
from C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/bundler-1.8.4/lib/bundler.rb:134:in `require'
from C:/Sites/simple_cms/config/application.rb:7:in `<top (required)>'
from C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/railties-4.2.0/lib/rails/commands/commands_tasks
.rb:78:in `require'
from C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/railties-4.2.0/lib/rails/commands/commands_tasks
.rb:78:in `block in server'
from C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/railties-4.2.0/lib/rails/commands/commands_tasks
.rb:75:in `tap'
from C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/railties-4.2.0/lib/rails/commands/commands_tasks
.rb:75:in `server'
from C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/railties-4.2.0/lib/rails/commands/commands_tasks
.rb:39:in `run_command!'
from C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/railties-4.2.0/lib/rails/commands.rb:17:in `<top
(required)>'
from bin/rails:4:in `require'
from bin/rails:4:in `<main>'
这是我的 gemfile:
# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '4.2.0'
# Use mysql as the database for Active Record
gem 'mysql2'
我彻底搜索,找到了一些答案,但没有用。
我将我的 libmysql.dll
文件从 Program Files/MySQL Server 5.6
粘贴到 Ruby/bin
,但仍然没有成功。我执行了以下命令:
gem uninstall mysql2
gem install mysql2 --platform=ruby
我按照本教程进行操作,但仍然遇到相同的错误:Error "...cannot load such file -- mysql2/2.0/mysql2 (LoadError)". On Windows XP with Ruby 2.0.0
如果有人能帮助我,我将不胜感激,这样我就可以将它部署到 Heroku。
谢谢。
从 Ruby 2.1.5 更新到 2.2.1 后,我遇到了同样的问题。问题似乎是 Rails 使用的 mysql2
gem 作为对 libmysql
的绑定。显然它不支持 Ruby 2.2 分支,但只支持 2.0 和 2.1.
我遇到了同样的问题,所以我改用 RubyInstaller。我不再有问题了。
问题是 mysql2
gem 没有安装其本地依赖项。在 Ruby 的早期版本中,这会触发 unable to build native gem extension
错误:
Ruby 2.2
中发生了一些变化,因此您 可以 安装 gem 而无需构建本机扩展。然而,这并不意味着问题已解决 - 因此您必须确保安装具有适当依赖项的 gem。
Download C-Connector from MYSQL(注意您的 Ruby 版本——如果您使用的是 64 位,请下载 64 位版本)
解压缩/安装 MYSQL C-Connector 文件夹到您的硬盘上(路径中不要有任何空格)
运行 以下命令:
gem install mysql2 --platform=ruby -- '--with-mysql-dir="C:/your-mysql-connector-path"'
这应该安装gem和它需要的文件
然后你可以从
C:/your-mysql-connector-path
复制libmysql.dll
-> c:/your-ruby-install/bin`
此安装与上一个安装的区别在于,此 应该 提及正在安装本机 gem 扩展 (This could take a while
),这表明 Ruby 正在查看图书馆。
这一次,如果安装正确,它应该适合你。
--
如果您仍然看到错误,则必须卸载系统上 mysql2
gem 的任何现有版本:
如果出现错误,您只需键入 gem uninstall mysql2
、select all
,然后重复上述步骤。
在上面的第 3 步中,我不得不使用一对额外的“-”并且路径周围没有引号。
gem install mysql2 -- --with-mysql-dir=C:\mysql-connector-dir
我使用的是 Win 7