Rails无法加载文件--mysql2/mysql2(LoadError)

16

我是Ruby on Rails的新手,我找不到解决这个错误的方法:

rails s

/usr/local/share/gems/gems/mysql2-0.3.13/lib/mysql2.rb:8:in `require': cannot load such file -- mysql2/mysql2 (LoadError)
from /usr/local/share/gems/gems/mysql2-0.3.13/lib/mysql2.rb:8:in `<top (required)>'
from /usr/local/share/gems/gems/bundler-1.3.5/lib/bundler/runtime.rb:72:in `require'
from /usr/local/share/gems/gems/bundler-1.3.5/lib/bundler/runtime.rb:72:in `block (2 levels) in require'
from /usr/local/share/gems/gems/bundler-1.3.5/lib/bundler/runtime.rb:70:in `each'
from /usr/local/share/gems/gems/bundler-1.3.5/lib/bundler/runtime.rb:70:in `block in require'
from /usr/local/share/gems/gems/bundler-1.3.5/lib/bundler/runtime.rb:59:in `each'
from /usr/local/share/gems/gems/bundler-1.3.5/lib/bundler/runtime.rb:59:in `require'
from /usr/local/share/gems/gems/bundler-1.3.5/lib/bundler.rb:132:in `require'
from /home/Harish/Documents/simple_cms/config/application.rb:7:in `<top (required)>'
from /usr/local/share/gems/gems/railties-4.0.0/lib/rails/commands.rb:76:in `require'
from /usr/local/share/gems/gems/railties-4.0.0/lib/rails/commands.rb:76:in `block in <top (required)>'
from /usr/local/share/gems/gems/railties-4.0.0/lib/rails/commands.rb:73:in `tap'
from /usr/local/share/gems/gems/railties-4.0.0/lib/rails/commands.rb:73:in `<top (required)>'
from bin/rails:4:in `require'
from bin/rails:4:in `<main>'

1
这个问题提供的信息远远不足以让我们进行调试。请至少给我们展示你的Gemfile文件。 - Ryan Bigg
我通过Google找到了这个问题。我的解决方案是sudo gem install mysql2 - Martin Thoma
10个回答

16
gem uninstall mysql2

gem install mysql2 --platform=ruby

删除Rails特定bundle目录中的mysql2 gem目录,并复制粘贴这个新安装的mysql2 gem。


6
对于Rails 3.2.17 和 Ruby 1.9.3-p448 以及 mysql2 0.3.11,运行 bundle update mysql2 更新到了0.3.15版本并解决了我的错误。

谢谢!如果在这个命令之后出现错误,请尝试删除mysql2并重新安装&& brew update mysql2。对我来说,这很有效! - mmike
你的意思是 brew upgrade mysql2 - fulvio

1

是的,使用rails 4.0.0和mysql2 gem的新版本(0.3.13)时会出现这个问题。删除vendor目录下的bundle文件夹,重新运行bundle install、update即可解决此问题。

cd {Your_RailsApp_Root}/vendor/
rm -rf bundle/
cd {Your_RailsApp_Root}
bundle install
bundle update

0
sudo installer -pkg /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg -target /

来自https://gorails.com/setup/osx/10.14-mojave


0
你是否已经安装了mysql2 gem?请检查你的gemfile文件中是否有gem "mysql2",然后在Rails应用程序的根目录下运行bundle install。同时,请确保你的开发环境中已经下载了mysql。

是的,我已经安装了mysql gem,并且在gem文件中也有它。 - Harish Gopalakrishnan

0
我在尝试运行bundle exec rake db:migrate之后,遇到了这个问题,并为此奋斗了一整天,尽管已经成功地bundle install了我的项目gems。
对我来说,mysql2试图加载一个不存在的配置文件。我已经在我的系统上brew install了mysql,并且mysql2正在寻找的内容已经存在于mysql安装中。我运行了以下命令:
gem install mysql2 -v 0.5.3 -- --with-mysql-config=/usr/local/Cellar/mysql@5.6/5.6.42/bin/mysql_config --with-ldflags=-L/usr/local/opt/openssl/lib --with-cppflags=-I/usr/local/opt/openssl/include

将mysql2指向正确的配置。

请注意,您拥有的mysql版本可能不同,您想要的gem版本也可能不同。 还要注意:gem安装路径可能与您的bundle install路径不同。您也可以使用以下命令将gem添加到bundle目录中:

gem install --install-dir /path/to/bundle/directory

或者您可以使用捆绑构建配置来设置宝石选项:

bundle config --local build.mysql2 --with-mysql-config="/usr/local/Cellar/mysql@5.6/5.6.42/bin/mysql_config" --with-ldflags=-"L/usr/local/opt/openssl/lib" --with-cppflags=-"I/usr/local/opt/openssl/include"

0

苹果芯片 M1:

gem install mysql2 -v '0.5' -- --with-opt-dir=$(brew --prefix openssl)

0

只需降低mysql2的版本即可。在我的情况下,我使用了“0.2.6”版本,这对我很有效。

  gem 'mysql2', '0.2.6'

使用 Ruby 版本 2.0.0 和 Gem 版本 1.8.25


-1

这对我有用。

  • gem uninstall mysql2
  • sudo gem install mysql2
  • bundle

1
我强烈建议不要使用 sudo 安装 Gems,除非你确切知道这是必须的。通常情况下,这并不是必需的。 - ZoFreX

-7

这个解决了我的错误:

[root@localhost cms]# su Harish

[Harish@localhost cms]$ bundle install

[Harish@localhost cms]$ rails s


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