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

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

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


当前回答

这个方法对我来说非常有效:

将以下内容添加到~/.profile中

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

http://www.rickwargo.com/2010/12/16/installing-mysql-5-5-on-os-x-10-6-snow-leopard-and-rails-3/

其他回答

谢谢,Ogapo !导出这个别名对我来说是可行的,然后我遵循链接,在我的例子中是mysql2。bundle在/Library/Ruby/Gems/1.8/ Gems/ mysql2-0.2.6/lib/mysql2/mysql2。所以我调整了install_name_tool来修改这个bundle,而不是~/中的一个。RVM,让它以应有的方式工作。

现在:

   $ 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)
        /usr/local/mysql/lib/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)

我是这样做的:

我运行下面的命令 18.执行install_name_tool -change libmysqlclient. sh命令。dylib /usr/local/mysql/lib/libmysqlclient.18。dylib ~ / .rvm /珠宝/ ruby-1.9.2-p180 /珠宝/ mysql2-0.2.7 / lib / mysql2 / mysql2.bundle

我的环境: $ rails -v Rails 3.0.6

$ mysql mysql version 14.14 Distrib 5.5.11,用于osx10.6 (i386),使用readline 5.1

$ ruby -v Ruby 1.9.2p180 (2011-02-18 revision 30909) [x86_64-darwin10.7.0]

希望这能帮助到一些人。

我从来不能让这些答案为我工作,但这是我用来使它为我工作的命令。这样你就不需要每次更新mysql时都使用install_name_tool了

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

Bundle install mysql——force帮助了我。它重新安装依赖,这是由于brew卸载mysql的结果。

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

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

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

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