206

我已经为此苦苦挣扎了一段时间。

我在我的 Snow Leopard 机器上安装了 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 gem 上。MySQL 似乎运行良好,我的 Gemfile 引用了 mysql2,我的 database.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.bundle 有吗!?

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

我已经尝试了谷歌能给我的一切!非常感谢任何帮助。

4

24 回答 24

395

我从来没有得到任何对我有用的答案,但这是我用来让它对我有用的命令。这样你就不需要每次更新 mysql 时都使用 install_name_tool

sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
于 2011-05-23T17:24:01.660 回答
93

我终于解决了这个问题!

我在 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

希望这对其他人有帮助!

于 2010-12-30T04:57:15.103 回答
88

这个修复对我来说效果很好:

将以下内容添加到您的 ~/.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/

于 2011-02-16T10:02:21.857 回答
43

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

gem pristine mysql2

于 2013-11-10T19:58:07.087 回答
28

我有同样的问题。看起来它无法找到 libmysqlclient 库。对我有用的临时修复如下:

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

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

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

于 2010-12-28T21:52:29.953 回答
25

将以下内容添加到您的~/.bash_profile

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

这对我有用

于 2011-11-29T00:24:48.587 回答
19

当您执行此操作时,在 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/lib/我们将创建符号链接,而不是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

于 2015-10-30T05:28:55.030 回答
13

以下几行对我有用。我正在使用 mac 10.7.2 。

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

于 2013-01-07T15:19:36.163 回答
12

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

于 2012-04-23T17:52:17.673 回答
4

这就是它对我的工作方式:

我运行了以下命令
sudo install_name_tool -change libmysqlclient.18.dylib /usr/local/mysql/lib/libmysqlclient.18.dylib ~/.rvm/gems/ruby-1.9.2-p180/gems/mysql2-0.2.7 /lib/mysql2/mysql2.bundle

我的环境:
$ rails -v Rails 3.0.6

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

$ ruby​​ -v
ruby​​ 1.9.2p180(2011-02-18 修订版 30909)[x86_64-darwin10.7.0]

希望这可以帮助某人。

于 2011-04-12T06:43:08.847 回答
3

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

于 2011-03-11T17:32:08.683 回答
3

嗨,Fredy Andersen推荐的链接对我有用

sudo install_name_tool -change libmysqlclient.16.dylib /usr/local/mysql /lib/libmysqlclient.16.dylib /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle

只需要在命令中更改为我的mysql版本,谢谢

于 2011-01-24T12:40:43.510 回答
3

谢谢,奥加波!导出该别名对我有用,然后我点击链接,在我的情况下,mysql2.bundle 在 /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle 中我调整了 install_name_tool 以修改该捆绑包而不是 ~/.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)
于 2010-12-28T23:34:31.310 回答
3

我在使用 Django 时遇到了这个问题,我曾经brew安装过很多我的开源程序,我需要执行以下操作,因为我曾经brew安装过mysql

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

请务必替换为您的库版本!

于 2012-04-16T05:04:32.633 回答
3

bundle install mysql --force帮助过我。它重新安装了由于brew uninstall mysql.

于 2016-01-12T16:22:08.580 回答
2

几天前我遇到了同样的问题。我最终设法解决了它。我不太确定怎么做,但我会告诉你我做了什么。也许它会帮助你。

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

为什么这很有用?因为你不应该乱用 OS X 中的默认 Ruby 安装。系统依赖于它。最好只保留默认的 Ruby 和 RoR 安装,并使用 RVM 创建一个新的,您可以将其用于自己的开发。

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

再说一遍:我不确定这会解决你的问题。但它确实对我有用,并且在任何情况下都强烈推荐使用 RVM。

于 2010-12-28T14:30:55.810 回答
2

我仍然发现,使用上述解决方案,它(例如)不适用于 TextMate 的 Rails 插件。我遇到了类似的错误(检索数据库架构时)。

所以做了什么,打开终端:

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)。

这使得符号链接到 lib,现在 rails 从命令行运行,以及 TextMate 插件,如ruby​​-on-rails-tmbundle

需要明确的是:这也修复了您在启动 rails server 时遇到的错误。

于 2012-01-11T15:25:58.347 回答
2

Jonty,我也在为此苦苦挣扎。

我认为这里有一个线索:

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。

如果我发现更多,我会发布更多!

于 2010-12-28T16:54:59.943 回答
2

这通常在您升级 mysql 时发生。基于旧 mysql 库构建的已安装 mysql2 gem 无法与新库一起使用。只需要重新安装它。

gem uninstall mysql2用.卸载 mysql2 然后安装它gem install mysql2

于 2016-03-05T08:17:07.200 回答
1

我已经通过在我的项目文件夹中创建 .rvmrc 文件来解决它,其中包含:

rvm use <yourrubie>

然后进入我的项目路径

cd ~/myprojectpath

然后我跑

bundle install
于 2011-09-13T13:11:34.787 回答
1

我的 luvlss 命令版本:

Mac OSX 10.10.5

MySQL 5.6.27

乘客 5.0.21

sudo ln -s /usr/local/mysql-5.6.27-osx10.8-x86_64/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib

如果您像我一样尝试许多不同的链接,请进行一些清理:

sudo unlink /usr/lib/libmysqlclient.18.dylib

于 2015-11-13T19:07:28.977 回答
1

打开终端并运行以下命令:

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

它应该工作。

于 2016-09-16T11:12:12.893 回答
0

对我来说,我不得不手动卸载 mysql

brew uninstall mysql
rm -rf /usr/local/var/mysql
brew install mysql
于 2018-04-05T22:05:26.283 回答
0

如果您使用的是 OSX 并使用 brew 安装了 mysql,您可以:

brew link mysql

如果您在使用版本时遇到问题(我运行了 mysql 5.7 而我的 gem 需要 5.6.25),您可以

brew unlink mysql
brew switch mysql 5.6.25
于 2016-02-19T07:01:44.850 回答