在OSX 10.11 El Capitan上使用Rails:Library not loaded: libmysqlclient.18.dylib

13

自从我将OSX升级到10.11后,无法再使用MySQL与我的Rails应用程序:

$ rails s
/Users/josh/.rvm/gems/ruby-2.2.3@a4aa2/gems/activesupport-4.2.1/lib/active_support/dependencies.rb:274:in `require': dlopen(/Users/josh/.rvm/gems/ruby-2.2.3@a4aa2/gems/mysql2-0.3.20/lib/mysql2/mysql2.bundle, 9): Library not loaded: libmysqlclient.18.dylib (LoadError)
  Referenced from: /Users/josh/.rvm/gems/ruby-2.2.3@a4aa2/gems/mysql2-0.3.20/lib/mysql2/mysql2.bundle
  Reason: image not found - /Users/josh/.rvm/gems/ruby-2.2.3@a4aa2/gems/mysql2-0.3.20/lib/mysql2/mysql2.bundle
    from /Users/josh/.rvm/gems/ruby-2.2.3@a4aa2/gems/activesupport-4.2.1/lib/active_support/dependencies.rb:274:in `block in require'
    from /Users/josh/.rvm/gems/ruby-2.2.3@a4aa2/gems/activesupport-4.2.1/lib/active_support/dependencies.rb:240:in `load_dependency'
    from /Users/josh/.rvm/gems/ruby-2.2.3@a4aa2/gems/activesupport-4.2.1/lib/active_support/dependencies.rb:274:in `require'

我发现了其他关于类似问题的帖子,但是在这方面我太菜了,而且版本也有所更改。

2个回答

54

在 El Capitan 之前的答案是要从 mysql 的 lib 目录中创建一个指向库文件的符号链接,并将其链接到 /usr/lib,如下所示:

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

然而,由于OS X的完整性控制,这现在会产生“操作不允许”的错误。可以通过禁用此功能来解决此问题。但是更简单的解决方案(我可以验证其有效)是将其符号链接到 /usr/local/lib 中:

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

好老的苹果。


工作正常。太好了,谢谢。 - Joshua Muheim
需要注意的一点是,如果您在虚拟环境中使用Python,则可能需要重新创建它或更改路径,因为它可能仍然引用不存在的/usr/lib版本。 - Dan Goldin
4
对我而言,libmysqlclient.18.dylib不存在。我所看到的只有libmysqlclient.20.dylib。然而,MySQL-Python仍然期望使用libmysqlclient.18.dylib。请问您需要如何处理? - iankit
它告诉我找不到该文件或目录。 - Zaira Zafar

2
我遇到了同样的问题,只需打开终端并输入以下命令:
sudo nano ~/.bash_profile

请粘贴以下代码:

MYSQL=/usr/local/mysql/bin
export PATH=$PATH:$MYSQL
export DYLD_LIBRARY_PATH=/usr/local/mysql/lib:$DYLD_LIBRARY_PATH

这就是它。


2
这对我没有任何改变。我还关闭并重新打开了终端,以确保它已经正确加载。 - Joshua Muheim
我今天遇到了类似的问题 - 你解决了吗? - Chrissy H

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