El Capitan 升级:未加载库:/usr/local/lib/libmysqlclient.18.dylib

Posted

技术标签:

【中文标题】El Capitan 升级:未加载库:/usr/local/lib/libmysqlclient.18.dylib【英文标题】:El Capitan upgrade: Library not loaded: /usr/local/lib/libmysqlclient.18.dylib 【发布时间】:2016-02-19 17:10:48 【问题描述】:

错误:

/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,否则我会遵循解决方案 here。

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

更新:

感谢@Rashmirathi 提供重新安装 gem 的提示。

只是想说明,我还需要在 Gemfile 中指定为:

gem 'mysql2', '~> 0.3.18'

否则我有错误:

为数据库适配器指定了“mysql2”,但未加载 gem。将gem 'mysql2' 添加到您的 Gemfile(并确保其版本为 ActiveRecord 要求的最低版本)。

但最后我得到了错误:

Mysql2::错误 您的密码已过期。要登录,您必须使用支持过期密码的客户端进行更改。

再次设置密码即可解决:

SET PASSWORD=PASSWORD('your_password');

【问题讨论】:

升级到 El Captain 后,我立即面临同样的问题。不知道为什么苹果还没有解决这个问题。即使通过 pip 升级 mysql 和 MySQL-python 后问题仍然存在。 【参考方案1】:

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

【讨论】:

我对您可能感兴趣的帖子做了一些更新... ;) 为了将来参考,由于Python和pip中的类似问题,我得到了这个线程,这个解决方案也有效(pip uninstall MySQL-python && pip install MySQL-python)。 如果只安装了一个版本的mysql,那么重新安装只是解决办法。【参考方案2】:

这将解决您的问题:

gem pristine mysql2

Cesar Sulbarán的解决方案

【讨论】:

【参考方案3】:

对于那些使用 OS X El Capitain 或更高版本的用户,这可以解决我的问题:

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

欲了解更多信息https://***.com/a/32875545/1066915

【讨论】:

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

我在 python 中遇到了类似的问题:libmysqlclient.20.dylib 而不是 El Capitan 上的 18pip install --upgrade mysql 已修复,但仅适用于 python2。

【讨论】:

相关库安装为pip install MySQL-python。但是--upgrade 对我不起作用,因为我有最新版本的库,由于某种原因已被破坏。组合卸载 + 安装对我有用。 @arsenyinfo 这对我有用。我从更新/升级 brew 中得到了错误。【参考方案5】:

我正在使用 Homebrew,因此我已通过逐步清除所有内容来解决此问题:

    在 Rails 应用程序 Gemfile 中注释掉 mysql2 gem

    "# gem 'mysql2'"

    从包中移除 mysql2 gem

    捆绑安装

    卸载 mysql2 gem(所有版本)

    gem 卸载 mysql2

    更新自制程序

    酿造更新

    卸载所有版本的mysql

    brew卸载--force mysql

    重新安装mysql

    brew安装mysql

    在 Gemfile 中取消注释 mysql2 gem

    宝石 mysql2

    将 mysql2 添加到包中

    捆绑安装

这种方法可能有点矫枉过正,但我​​觉得很干净。

【讨论】:

【参考方案6】:

只是想插话-我刚刚遇到了与 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)

【讨论】:

以上是关于El Capitan 升级:未加载库:/usr/local/lib/libmysqlclient.18.dylib的主要内容,如果未能解决你的问题,请参考以下文章

升级到 El Capitan OS 后 mcrypt 出错

El Capitan 升级后 Mysql 不工作

升级到 El Capitan 后出现无效的活动开发者路径错误

将 MacBook Air 从 OS X El Capitan 升级到 Mojave [关闭]

升级到 OSX El Capitan 后 iOS 模拟器 NSPOSIXErrorDomain Code=2

将 OSX 更新为“El Capitan”后未定义的函数 mcrypt