我已经为此纠结了一段时间。

我已经在我的雪豹机器上安装了Rails 3, gem, mysql。一切都很顺利,直到我创建了我的第一个项目并试图运行

rails server

在运行这个我得到:

jontybrook$ rails server
/Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle: dlopen(/Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle, 9): Library not loaded: libmysqlclient.16.dylib (LoadError)
  Referenced from: /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle
  Reason: image not found - /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle
    from /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2.rb:7
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler/runtime.rb:64:in `require'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler/runtime.rb:64:in `require'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler/runtime.rb:62:in `each'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler/runtime.rb:62:in `require'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler/runtime.rb:51:in `each'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler/runtime.rb:51:in `require'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler.rb:112:in `require'
    from /Users/jontybrook/Dropbox/CODING/simple_cms/config/application.rb:7
    from /Library/Ruby/Gems/1.8/gems/railties-3.0.3/lib/rails/commands.rb:28:in `require'
    from /Library/Ruby/Gems/1.8/gems/railties-3.0.3/lib/rails/commands.rb:28
    from /Library/Ruby/Gems/1.8/gems/railties-3.0.3/lib/rails/commands.rb:27:in `tap'
    from /Library/Ruby/Gems/1.8/gems/railties-3.0.3/lib/rails/commands.rb:27
    from script/rails:6:in `require'
    from script/rails:6
jontybrook$ 

据我所知,问题是与mysql2宝石。MySQL似乎运行良好,我的Gemfile引用mysql2,我的数据库。Yml文件似乎也可以。

错误中提到

Reason: image not found - /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle

然而,

jontybrook$ cd /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2
jontybrook$ ls
client.rb   em.rb       error.rb      mysql2.bundle result.rb

MySQL2。捆绑在那里!?

如果我使用旧的mysql gem, WEBrick启动正常。但这并不理想,不是吗?

谷歌能给我的我都试过了!任何帮助都非常感激。


当前回答

几天前我也遇到过同样的问题。我最终解决了这个问题。我不太确定是怎么做到的,但我会告诉你我做了什么。也许对你有帮助。

我从下载RVM开始。如果你还没有使用它,我强烈建议你这样做。它基本上为Ruby、RoR和RubyGems的新安装创建了一个沙盒。事实上,您可以同时进行多个安装,并立即切换到另一个安装。这招很管用。

为什么这个有用?因为你不应该乱动OS x中的默认Ruby安装,系统依赖于它。最好不要使用默认的Ruby和RoR安装,而是使用RVM创建一个可以用于自己开发的新安装。

一旦我创建了独立的Ruby安装,我只安装了RoR、RubyGems和mysql,它就工作了。关于我所采取的确切步骤,请参阅我的问题:安装Rails, MySQL等,一切都出错了

再次强调:我不确定这是否能解决你的问题。但是它确实对我有用,在任何情况下都强烈推荐使用RVM。

其他回答

我也有同样的问题。它似乎无法找到libmysqlclient库。以下是对我有效的临时解决方法:

export DYLD_LIBRARY_PATH=/usr/local/mysql/lib/

我不确定配置在哪里指定加载路径或它被设置为什么,但我的mysql安装似乎不在其中。如果我找到一个更永久的解决方案,我会再次发帖。

编辑: 实际上,这个修复程序似乎更准确地解决了这个问题。

对我来说,这只是因为我升级了mysql,但没有更新mysql2宝石-重新安装宝石将修复它…

宝石原始mysql2

我终于解决了这个问题!

我在RVM下重新安装了Ruby和Rails。我使用的是Ruby版本1.9.2-p136。

在rvm下重新安装后,仍然存在此错误。

最后,解决这个问题的神奇命令是:

sudo install_name_tool -change libmysqlclient.16.dylib /usr/local/mysql/lib/libmysqlclient.16.dylib ~/.rvm/gems/ruby-1.9.2-p136/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle

我在使用Django时遇到了这个问题,我使用brew安装了很多开源程序,我需要做以下工作,因为我使用brew安装mysql:

sudo ln -s /usr/local/Cellar/mysql/5.5.20/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib

请确保替换为您版本的库!

这通常发生在你升级mysql的时候。安装的mysql2 gem是建立在旧的mysql库上的,不能与新的库一起工作。只需要重新安装。

用gem卸载mysql2。然后用gem install mysql2安装它