生产环境下出现Rails 3. no such file to load -- mysql2/mysql2错误

4

在生产环境中,Passenger 弹出错误信息 no such file to load -- mysql2/mysql2

关于这个错误的详细信息是:/var/www/releases/20120103021152/vendor/cache/ruby/1.9.1/gems/mysql2-0.2.18/lib/mysql2.rb。实际上,该文件并不存在。

为什么会出现这个错误?如何解决它?

3个回答

7
我遇到了相同的错误。
rails s
 {railsroot}/vendor/bundle/ruby/1.9.1/gems/mysql2-0.3.11/lib/mysql2.rb:9:in `require':
 cannot load such file -- mysql2/mysql2 (LoadError)  

以下方法已经可行。 ('{railsroot}/vendor/bundle/ruby/1.9.1/gems/' 的路径因系统而异。)
cd {railsroot}/vendor/bundle/ruby/1.9.1/gems/mysql2-0.3.11/mysql2/ext
ruby extconf.rb
make
make install

cd {railsroot}/vendor/bundle/ruby/1.9.1/gems/bcrypt-ruby-3.0.1/ext/mri
ruby extconf.rb
make
make install

1
谢谢。这对我有用(尽管在我的环境中路径有点不同)- 我只需要做第一部分(而不是bcrypt部分)。 - Stefan Ladwig

3

我最后手动删除了gems文件夹中的所有gem并运行了bundle install。有问题的gem(一个mysql-2.0.18或其他版本的gem)就不再被安装了。


1
你在哪里删除了宝石? - jpganz18

1
一些事情: Ruby 1.9.1与Rails(3+)存在许多已知错误,请考虑升级到1.9.2。 您是手动安装了mysql2 gem,然后将其添加到了Gemfile中吗?如果是这样,请手动卸载它(所有版本),然后运行bundle install

OP可能运行的是1.9.1之外的另一个Ruby版本。这只是因为自1.9.1以来,所有 Ruby版本都会将它们的Gems安装到一个名为1.9.1的目录中,而不管它们的实际版本如何。 - Holger Just

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