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

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

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


当前回答

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

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

它应该会起作用。

其他回答

如果你正在使用OSX并使用brew安装mysql,你可以:

brew link mysql

如果你有问题的版本(我有mysql 5.7运行,而我的gem需要5.6.25),你可以

brew unlink mysql
brew switch mysql 5.6.25

我仍然发现上面的解决方案,它不工作(例如)与Rails插件TextMate。我得到了一个类似的错误(检索数据库模式时)。

所以我们做的是,打开终端:

cd /usr/local/lib
sudo ln -s ../mysql-5.5.8-osx10.6-x86_64/lib/libmysqlclient.16.dylib .

将mysql-5.5.8-osx10.6-x86_64替换为您自己的路径(或mysql)。

这使得一个符号链接到库,现在rails从命令行运行,以及TextMate插件(如ruby-on-rails-tmbundle)。

需要明确的是:这也修复了启动rails服务器时的错误。

我已经通过在我的项目文件夹中创建.rvmrc文件解决了这个问题:

rvm use <yourrubie>

然后进入我的项目路径

cd ~/myprojectpath

然后我就跑

bundle install

我通过删除当前项目的gemset并重新创建它并重新运行bundle install来解决这个问题。我想是我安装了一个新版本的mysql造成的。

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

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

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

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