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

Ask*_*kar 32 ruby mysql macos ruby-on-rails-4.2 osx-elcapitan

错误:

/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
Run Code Online (Sandbox Code Playgroud)

在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
Run Code Online (Sandbox Code Playgroud)

$ 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
Run Code Online (Sandbox Code Playgroud)

正如你看到的我有libmysqlclient.20.dylib,它20不是18,否则我会遵循解决方案在这里.

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

更新:

感谢@Rashmirathi提示重新安装宝石.

只是想注意,我还需要在Gemfile中指定为:

gem 'mysql2', '~> 0.3.18'
Run Code Online (Sandbox Code Playgroud)

否则我有错误:

为数据库适配器指定'mysql2',但未加载gem.添加gem 'mysql2'到您的Gemfile(并确保其版本是ActiveRecord所需的最低版本).

但最后我得到了错误:

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

通过再次设置密码解决了这个问题:

SET PASSWORD=PASSWORD('your_password');
Run Code Online (Sandbox Code Playgroud)

Ras*_*thi 53

我之前遇到了同样的问题,我通过重新安装gem修复了它mysql2.


小智 41

这将解决您的问题:

gem pristine mysql2
Run Code Online (Sandbox Code Playgroud)

CesarSulbarán的解决方案

  • 这对我没有解决,只重新安装工作. (3认同)

Fab*_* Sa 23

对于那些OS X El Capitain或更多,这解决了我的问题:

sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/local/lib/libmysqlclient.18.dylib
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请访问/sf/answers/2301288181/


ben*_*ter 5

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

  • 相关的lib安装为`pip install MySQL-python`.但是`--upgrade`对我来说不起作用,因为我有最新版本的lib因为某些原因被破坏了.组合卸载+安装为我工作. (4认同)