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

我已经在我的雪豹机器上安装了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启动正常。但这并不理想,不是吗?

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


当前回答

约蒂,我也很纠结。

我觉得这里有个线索

otool -L /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle

/Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle:
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/libruby.1.dylib (compatibility version 1.8.0, current version 1.8.7)
    libmysqlclient.16.dylib (compatibility version 16.0.0, current version 16.0.0)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 125.2.1)

注意到到dylib的路径很短吗?

我试图找出gem安装说明离开dylib路径的位置,但它进展缓慢,因为我自己从未构建过gem。

如果我找到更多,我会发布更多!

其他回答

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

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

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

刚刚遇到了这个问题。我所要做的就是卸载mysql2 gem并重新安装它。希望这对其他人也有用

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

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

打开一个终端,运行如下命令:

export PATH=$PATH:/usr/local/mysql/bin

它应该会起作用。

在OSX El Capitan更新时,你这样做:

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

它抛出一个错误

ln: /usr/lib/libmysqlclient.18.dylib: Operation not permitted

因此,为了避免这种情况,您可以首先定位libmysqlclient.18。使用命令Dylib

User$ locate libmysqlclient.18.dylib

在我的例子中,它返回/usr/local/mysql-5.5.24-osx10.5-x86_64/lib/libmysqlclient.18.dylib

因此,我们将创建usr/local/lib/的符号链接,如下所示:

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

详情:https://forums.developer.apple.com/thread/7935