Library not loaded:libmysqlclient.16.dylib在使用mysql2 gem在OS X 10.6上运行'rails server'时出错

我一直在为此奋斗一段时间。

我在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的宝石。 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的宝石,WEBrick靴子罚款。 但是这不是很理想,是吗?

我已经试过谷歌可以给我的一切! 任何帮助非常感谢。

我从来没有能够得到任何这些答案为我工作,但这是我用来使它为我工作的命令。 这样你每次更新你的mysql都不需要使用install_name_tool

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

我已经解决了这个,最终!

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

希望这可以帮助别人!

这个修复对我来说工作得非常好:

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

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

gem pristine mysql2

我有同样的问题。 它看起来像无法找到libmysqlclient库。 为我工作的临时解决方案如下:

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

我不知道配置在哪里指定加载路径或它设置为,但我的MySQL安装似乎没有在其中。 如果我找到更持久的解决方案,我会再次发布。

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

将下面的代码添加到~/.bash_profile

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

这对我有效

在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

以下线为我工作。 我使用的是Mac 10.7.2。

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

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

这是如何为我工作的:

我运行了下面的命令
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,使用readline 5.1的osx10.6(i386)

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

希望这有助于某人。

谢谢,Ogapo! 导出别名为我工作,然后我跟着链接,在我的情况下,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) 

嗨它从弗雷迪·安徒生推荐链接工作

 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,在命令,谢谢

我通过删除当前项目的gemset并重新创建并重新运行软件包安装来解决此问题。 我想我是通过安装更新​​版本的mysql来实现的。

我在使用Django时遇到了这个问题,我使用brew来安装很多开源程序,而且由于我使用了brew来安装mysql ,因此我需要执行以下操作:

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

一定要替换您的版本的库!

bundle install mysql --force帮助了我。 它重新安装了由于brew uninstall mysql而导致的依赖项。

强尼,我也在为此苦苦挣扎。

我想这里有一个线索:

 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,所以速度很慢。

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

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

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

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

一旦我创建了我的单独的Ruby安装,我刚刚安装了RoR,RubyGems和mysql,并且工作。 对于我采取的确切步骤,看到我的问题: 安装Rails,MySQL等,一切都出错了

再次:我不知道这将解决您的问题。 但它确实为我做了诡计,在任何情况下使用RVM都是非常值得推荐的。

我仍然发现,使用上面的解决方案,它不适用于(例如)TextMate的Rails插件。 我有一个类似的错误(当检索数据库模式时)。

那么开放的终端是什么呢?

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

用你自己的路径(或mysql)替换mysql-5.5.8-osx10.6-x86_64

这使得一个符号链接到lib,现在轨道从命令行运行,以及TextMate插件(s)像ruby-on-rails-tmbundle

要清楚:这也解决了启动rails服务器时出现的错误。

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

 rvm use <yourrubie> 

然后进入我的项目路径

 cd ~/myprojectpath 

然后我跑

 bundle install 

我的版本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

这通常发生在你升级mysql时。 安装在旧的mysql库上的mysql2 gem无法使用新的库。 只需要重新安装它。

gem uninstall mysql2 。 然后用gem install mysql2安装它

如果您使用OSX并使用brew安装mysql,则可以:

 brew link mysql 

如果您遇到版本问题(我的MySQL 5.7运行,而我的宝石需要5.6.25),你可以

 brew unlink mysql brew switch mysql 5.6.25 

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

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

它应该工作。