升级El Capitan后出现的问题:库未加载:/usr/local/lib/libmysqlclient.18.dylib

35

错误:

/Users/askar/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/mysql2-0.3.20/lib/mysql2.rb:31:in `require': dlopen(/Users/askar/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/extensions/x86_64-darwin-14/2.2.0-static/mysql2-0.3.20/mysql2/mysql2.bundle, 9): Library not loaded: /usr/local/lib/libmysqlclient.18.dylib (LoadError)
  Referenced from: /Users/askar/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/extensions/x86_64-darwin-14/2.2.0-static/mysql2-0.3.20/mysql2/mysql2.bundle
  Reason: image not found - /Users/askar/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/extensions/x86_64-darwin-14/2.2.0-static/mysql2-0.3.20/mysql2/mysql2.bundle
在 Gemfile 文件中添加:gem 'mysql2' $ ls -al /usr/local/lib/libmysql*
lrwxr-xr-x  1 askar  admin  49 Nov 13 10:48 /usr/local/lib/libmysqlclient.20.dylib -> ../Cellar/mysql/5.7.9/lib/libmysqlclient.20.dylib
lrwxr-xr-x  1 askar  admin  42 Nov 13 10:48 /usr/local/lib/libmysqlclient.a -> ../Cellar/mysql/5.7.9/lib/libmysqlclient.a
lrwxr-xr-x  1 askar  admin  46 Nov 13 10:48 /usr/local/lib/libmysqlclient.dylib -> ../Cellar/mysql/5.7.9/lib/libmysqlclient.dylib
lrwxr-xr-x  1 askar  admin  37 Nov 13 10:48 /usr/local/lib/libmysqld.a -> ../Cellar/mysql/5.7.9/lib/libmysqld.a
lrwxr-xr-x  1 askar  admin  44 Nov 13 10:48 /usr/local/lib/libmysqlservices.a -> ../Cellar/mysql/5.7.9/lib/libmysqlservices.a

$ ls -al /usr/local/Cellar/mysql/5.7.9/lib/

total 84392
drwxr-xr-x   9 askar  admin       306 Nov 12 22:16 .
drwxr-xr-x  14 askar  admin       476 Nov 13 10:48 ..
-r--r--r--   1 askar  admin   3780168 Nov 13 10:48 libmysqlclient.20.dylib
-r--r--r--   1 askar  admin   4280752 Nov 12 22:16 libmysqlclient.a
lrwxr-xr-x   1 askar  admin        23 Nov 12 22:16 libmysqlclient.dylib -> libmysqlclient.20.dylib
-r--r--r--   1 askar  admin  35126528 Nov 12 22:16 libmysqld.a
-r--r--r--   1 askar  admin      9048 Nov 12 22:16 libmysqlservices.a
drwxr-xr-x   3 askar  admin       102 Nov 13 10:48 pkgconfig
drwxr-xr-x  43 askar  admin      1462 Nov 12 22:17 plugin
drwxr-xr-x  43 askar  admin      1462 Nov 12 22:17 plugin

如您所见,我的问题是关于libmysqlclient.20.dylib,版本是20而不是18,否则我会按照这里的解决方案操作。

我最近升级到了El Capitan,但不确定是否是这个原因。

更新:

感谢 @Rashmirathi 的提示,让我重新安装了gem。

只需要注意,在Gemfile中还需要指定如下内容:

gem 'mysql2', '~> 0.3.18'
否则,我会遇到错误:
指定了'mysql2'作为数据库适配器,但是该 gem 未被加载。将gem 'mysql2'添加到您的Gemfile中(并确保其版本至少满足ActiveRecord的最低要求)。
但最终我遇到了错误:
Mysql2::Error
您的密码已过期。您必须使用支持过期密码的客户端更改密码以登录。
通过重新设置密码解决了此问题:
SET PASSWORD=PASSWORD('your_password');

我在升级到El Captain后立即遇到了同样的问题。不确定为什么苹果还没有修复这个问题。即使通过pip升级了mysql和MySQL-python,问题仍然存在。 - iankit
6个回答

54

我之前也遇到了同样的问题,通过重新安装 mysql2 gem 来解决。


我在我的帖子上进行了一些更新,你可能会感兴趣... ;) - Askar
为了以后参考,我因Python和pip出现类似问题而进入了这个线程,这个解决方案也起作用(pip uninstall MySQL-python && pip install MySQL-python)。 - Valmiky Arquissandas
如果只安装了一个版本的MySQL,则重新安装是唯一的解决方案。 - Sukeerthi Adiga

42

这将解决你的问题:

gem pristine mysql2

Cesar Sulbarán提供的解决方案。


23

对于那些使用OS X El Capitan或更高版本的人,这个解决方法可以解决我的问题:

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

更多信息请参见https://dev59.com/hGkv5IYBdhLWcg3wfA4P#32875545


对我来说,这是一个更通用的解决方案: ln -nfs /usr/local/lib/libmysqlclient.dylib /usr/local/lib/libmysqlclient.18.dylib - Arkhitech

5

我在使用Python时遇到了类似的问题:在El Capitan上,libmysqlclient.20.dylib代替了18。通过pip install --upgrade mysql来解决问题,但这只适用于Python2。


4
相关的库可以通过 pip install MySQL-python 进行安装。然而,由于我已经安装了最新版本但该库因某些原因已被破坏,所以 --upgrade 对我无效。对该库进行卸载再重新安装的组合操作对我有效。 - arsenyinfo
1
@arsenyinfo这对我很有用。我从更新/升级啤酒中获得了错误信息。 - Esteban

4

我使用Homebrew, 所以我通过逐步清理一切来解决这个问题:

  1. 在Rails应用的Gemfile中注释掉mysql2 gem

    "# gem 'mysql2'"

  2. 从bundle中删除mysql2 gem

    bundle install

  3. 卸载mysql2 gem(所有版本)

    gem uninstall mysql2

  4. 更新Homebrew

    brew update

  5. 卸载所有版本的mysql

    brew uninstall --force mysql

  6. 重新安装mysql

    brew install mysql

  7. 取消注释Gemfile中的mysql2 gem

    gem mysql2

  8. 将mysql2添加到bundle中

    bundle install

这种方法可能有点过度,但对我来说感觉很清洁。


1

我想在这里发表一下意见- 我刚刚遇到了libmysqlclient.18.dylib 18-20的问题。重新安装mysql gem(activerecord-mysql-adapter的依赖项)有所不同。重新安装mysql2没有任何作用。

编辑以澄清:我的错误消息追溯到我的mysql gem,但我通过搜索找到了这个线程,所以我在这里包含它:

Please install the mysql adapter: `gem install activerecord-mysql-adapter` (dlopen(/Users/eriks/.rvm/gems/ruby-2.1.4/gems/mysql-2.9.1/lib/mysql/mysql_api.bundle, 9): 
Library not loaded: /usr/local/lib/libmysqlclient.18.dylib 
Referenced from: /Users/eriks/.rvm/gems/ruby-2.1.4/gems/mysql-2.9.1/lib/mysql/mysql_api.bundle
Reason: image not found - /Users/eriks/.rvm/gems/ruby-2.1.4/gems/mysql-2.9.1/lib/mysql/mysql_api.bundle) (LoadError)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接