Ruby on Rails - 无法加载这样的文件 - mysql2 / 2.2 / mysql2(LoadError) [英] Ruby on Rails - cannot load such file -- mysql2/2.2/mysql2 (LoadError)

查看:110
本文介绍了Ruby on Rails - 无法加载这样的文件 - 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:在'require'
:无法加载这样的文件 - 从C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/mysql2-0.3.18-x64-mingw32/的mysql2 / 2.2 / mysql2(LoadError)
lib / mysql2 / mysql2.rb:2
:在<< top(required)>'
from C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/mysql2 -0.3.18-x64-mingw32 / lib / mysql2.rb:31:在`r
equire'
从C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/ mysql2-0.3.18-x64-mingw32 / lib / mysql2.rb:31:在<<
top(必填)>'来自C:\\ bub
/ :在C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/bundler-1.8.4/lib/bundler/runtime.rb:76:中的`requ
ire'
中。在`bloc
k(2个级别)需要'
from C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/bundler-1.8.4/lib/bundler/runtime。 rb:72:在C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/bundler-1.8.4/lib/bundler/runtime.rb的`each
'
中: 72:在`bloc
k in需要'
from C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/bundler-1.8.4/lib/bundler/runtime.rb: 61:在C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/bundler-1.8.4/lib/bundler/runtime.rb:61:中的`each
'
中, in`requ
ire'
from C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/bundler-1.8.4/lib/bundler.rb:134:in`require 'C:/Sites/simple_cms/config/application.rb:7中的
:在<< top(required)>'
from C:/ Ruby22-x64 / lib / ruby​​ / gems /2.2.0/gems/railties-4.2.0/lib/rails/commands/commands_tasks
.rb:78:在'require'
从C:/ Ruby22-x64 / lib / ruby​​ / gems /2.2.0/gems/railties-4.2.0/lib/rails/commands/commands_tasks
.rb:78:在`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:在`tap'中
从C:/ Ruby22-x64 / lib / ruby /gems/2.2.0/gems/railties-4.2.0/lib/rails/commands/commands_tasks
.rb:75:在`server'
从C:/ Ruby22-x64 / lib / ruby /gems/2.2.0/gems/railties-4.2.0/lib/rails/commands/commands_tasks
.rb:39:在`run_command!'
从C:/ Ruby22-x64 / lib / ruby / gems / 2.2.0 / gems / railties-4.2.0 / lib / rails / commands.rb:17:在< b $ b $(必填)>'
from bin / rails: 4:在'require'中
from bin / rails:4:在< main>中

这是我的gemfile:

 #Bundle edge Rails改为:gem'rails',github:'rails / rails'
gem'rails','4.2.0'
#使用mysql作为Active Record的数据库
gem'mysql2'

我彻底搜索了一下,发现了一些答案,但没有成功。



我粘贴了我的 libmysql.dll 文件来自 Program Files / MySQL Server 5.6 Ruby / bin

  gem卸载mysql2 

gem install mysql2 --platform = ruby​​

我遵循本教程,仍然遇到相同的错误::


  1. 从MYSQL下载C-Connector (注意您的Ruby版本 - 如果您使用的是64位,请下载64位版本)

  2. 解压/安装MYSQL C-将连接器文件夹放入硬盘(路径中没有空格) 运行以下命令: gem install mysql2 - platform = ruby​​ - '--with-mysql-dir =C:/ your-mysql-connector-path'


  3. <
  4. 然后你可以复制 libmysql.dll from C:/ your-mysql-connector-path - > c:/ your-ruby-install / bin


因为这个应该提到正在安装原生gem扩展(这可能需要一段时间),这表明Ruby正在查看库。



这一次,如果安装正确,它应该适用于您。



-



如果您仍然看到错误,则必须卸载系统中任何现有版本的 mysql2 gem :





如果您遇到错误,只需输入 gem unstally mysql2 ,选择 all ,然后重复上述步骤。


I was using SQLite for my Rails project but when I heard that Heroku doesn't support SQLite, I switched to MYSQL.

After switching my database, I started my rails server "rails s" but it gives me the following error:

    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>'

This is my 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'

I searched thoroughly, found some answers but it didn't work.

I pasted my libmysql.dll file from Program Files/MySQL Server 5.6 to Ruby/bin but still no luck. I performed the following commands:

gem uninstall mysql2

gem install mysql2 --platform=ruby

I followed this tutorial and still got the same error: Error "...cannot load such file -- mysql2/2.0/mysql2 (LoadError)". On Windows XP with Ruby 2.0.0

I will highly appreciate it if someone will help me out, so that I can deploy it to Heroku.

Thanks.

解决方案

The problem is that the mysql2 gem is not installing with its native dependencies. In previous versions of Ruby, this would have triggered the unable to build native gem extension error:

Something has changed in Ruby 2.2 so that you can install the gem without it building the native extension. This does not mean the problem is resolved however - and so you have to ensure you install the gem with the appropriate dependencies.

Tutorial:

  1. Download C-Connector from MYSQL (note your version of Ruby -- if you're using 64 bit, download the 64 bit version)

  2. Unzip / Install the MYSQL C-Connector folder onto your HDD (don't have any spaces in the path)

  3. Run the following command: gem install mysql2 --platform=ruby -- '--with-mysql-dir="C:/your-mysql-connector-path"'

  4. This should install the gem with the files it needs

  5. Then you can copy libmysql.dll from C:/your-mysql-connector-path -> c:/your-ruby-install/bin`

The difference between this install and the previous one will be that this should mention that the native gem extensions are being installed (This could take a while), which suggests that Ruby is looking at the library.

This time, if it installs correctly, it should work for you.

--

If you're still seeing an error, you'll have to uninstall any existing versions of the mysql2 gem on your system:

If you're getting an error, you just need to type gem unstally mysql2, select all and then repeat the steps above.

这篇关于Ruby on Rails - 无法加载这样的文件 - mysql2 / 2.2 / mysql2(LoadError)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆