库未加载:libmysqlclient.16.dylib尝试运行时出错';rails服务器&x27;在带有mysql2 gem的OS X 10.6上

库未加载:libmysqlclient.16.dylib尝试运行时出错';rails服务器&x27;在带有mysql2 gem的OS X 10.6上,mysql,ruby-on-rails,rubygems,webrick,Mysql,Ruby On Rails,Rubygems,Webrick,我已经为此挣扎了一段时间 我已经在我的雪豹机器上安装了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/mys

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

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


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

几天前我也遇到了同样的问题。我最终设法解决了这个问题。我不太清楚怎么做,但我会告诉你我到底做了什么。也许对你有帮助

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

这为什么有用?因为你不应该在OSX中破坏默认的Ruby安装。系统依赖于它。最好不要使用默认的Ruby和RoR安装,而是使用RVM创建一个新的安装,用于您自己的开发

一旦我创建了单独的Ruby安装,我就安装了RoR、RubyGems和mysql,并且运行正常。有关我采取的确切步骤,请参见我的问题:


再说一遍:我不确定这会解决你的问题。但它确实对我起到了作用,无论如何,使用RVM都是非常值得推荐的。

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)
注意到动态库的路径,呃,相当短

我试图弄清楚gem安装指令在哪里离开了dylib路径,但是进展很慢,因为我自己从来没有构建过gem


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

我也有同样的问题。似乎找不到libmysqlclient库。以下是对我有效的临时修复:

export DYLD_LIBRARY_PATH=/usr/local/mysql/lib/
我不确定配置在哪里指定了加载路径,或者设置了什么,但我的mysql安装似乎不在其中。如果我找到一个更持久的解决方案,我会再次发布

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

谢谢,Ogapo!导出别名对我来说很有效,然后我按照链接进行操作,在我的例子中,mysql2.bundle出现在/Library/Ruby/Gems/1.8/Gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle中,因此我调整了install_name_工具来修改该bundle,而不是~/.rvm中的bundle,并以应该的方式实现了这一点

所以现在:

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

我终于解决了这个问题

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

希望这对其他人有帮助

您好,从推荐链接上看,它对我很有效

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

此修复程序对我非常有效:

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

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

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

这就是我的工作原理:

我运行了下面的命令
sudo安装_name_工具-更改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——版本
mysql版本14.14发行版5.5.11,用于使用readline 5.1的osx10.6(i386)

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


希望这对别人有帮助

我从来没能得到这些答案中的任何一个对我有用,但这是我用来让它对我有用的命令。这样,您就不需要每次更新mysql时都使用install\u name\u工具

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

我已通过在项目文件夹中创建.rvmrc文件解决了此问题,该文件包含:

rvm use <yourrubie>
然后我就跑

bundle install

将以下内容添加到您的
~/.bash\u配置文件中:

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

这对我来说是有效的

我仍然发现,使用上面的解决方案,对于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插件,比如rubyonrails


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

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

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

请确保替换为您的库版本

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

以下几行对我有用。我使用的是mac 10.7.2


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

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


执行此操作时,OSX El Capitan update中的gem pristine mysql2

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
ln: /usr/lib/libmysqlclient.18.dylib: Operation not permitted
User$ locate libmysqlclient.18.dylib
sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/local/lib/libmysqlclient.18.dylib
brew link mysql
brew unlink mysql
brew switch mysql 5.6.25
export PATH=$PATH:/usr/local/mysql/bin
brew uninstall mysql
rm -rf /usr/local/var/mysql
brew install mysql