在OSX上使用Rails+MySQL时出现的问题:库未加载:libmysqlclient.18.dylib

125

我刚开始学习 Ruby(和 Rails)。我按照链接 http://ruby.railstutorial.org/ruby-on-rails-tutorial-book#sec:ruby 中的指示设置了 rvm 宝石,并且已经成功地使用 sqlite 进行了一切工作。

现在我想尝试将事情转换到 MySQL 上,因为这是我大部分开发所使用的。在我的 Gemfile 文件中,我已经用 mysql2 替换了 sqlite:

group :development, :test do
#  gem 'sqlite3', '1.3.5'
  gem 'mysql2'
  gem 'rspec-rails', '2.9.0'
end

但是,当我尝试在MySQL中为Rails创建数据库时,我遇到了以下问题:

$ rake db:create --trace
rake aborted!
dlopen(/Users/username/.rvm/gems/ruby-1.9.3-p194@rails3tutorial2ndEd/gems/mysql2-0.3.11/lib/mysql2/mysql2.bundle, 9): Library not loaded: libmysqlclient.18.dylib
  Referenced from: /Users/username/.rvm/gems/ruby-1.9.3-p194@rails3tutorial2ndEd/gems/mysql2-0.3.11/lib/mysql2/mysql2.bundle
  Reason: image not found - /Users/username/.rvm/gems/ruby-1.9.3-p194@rails3tutorial2ndEd/gems/mysql2-0.3.11/lib/mysql2/mysql2.bundle

我看到其他帖子推荐通过 homebrew 重新安装 MySQL(我的是通过可下载的 DMG 安装的),但我不想这样做,因为我已经有其他数据库用于其他非 Ruby 项目。

实际上,我有 Rails 正在寻找的文件;它安装在 /usr/local/mysql/lib/libmysqlclient.18.dylib。告诉 Rails 如何定位它的最佳方法是什么?


这可能是一个重复的问题吗?https://dev59.com/j2855IYBdhLWcg3wFAHy - oldhomemovie
确实。我不能删除自己的问题吗?投票关闭为重复。 - George Armhold
28个回答

0

经过大量的谷歌搜索和尝试上述所有方法...唯一解决我的问题的是这个命令:

$install_name_tool -id /usr/local/lib/libmysqlclient.18.dylib /usr/local/lib/libmysqlclient.18.dylib

我正在使用Macbook Pro,操作系统是OSX 10 El Capitan。 Darwin xxxx-MacBook-Pro.local 15.6.0 Darwin Kernel Version 15.6.0:Thu Jun 23 18:25:34 PDT 2016; XXX:xnu-3248.60.10〜1 / RELEASE_X86_64 x86_64 Perl:v5.18.2 Mysql:5.6.19


0

我在加载那个捆绑文件时遇到了一个坏符号链接的问题。因此,请检查该链接,并在需要时用新的替换它。从那时起,一切都顺利了。不确定为什么会发生这种情况,但确实发生了。这是第一次出现这样的语法错误。


0
对我来说,获胜的组合是:
gem uninstall mysql2
bundle install

0

从命令行中使用以下命令:

sudo install_name_tool -id /usr/local/mysql-connector-c-6.1.3-osx10.7-x86_64/lib/libmysqlclient.18.dylib /usr/local/mysql-connector-c-6.1.3-osx10.7-x86_64/lib/libmysqlclient.18.dylib

在几台使用Maverick的电脑上尝试过,总是能正常工作。


0
如果您正在使用Bitnami RubyStack并遇到类似的问题,请尝试这个方法。
sudo ln -s /Applications/rubystack-2.0.0-17/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib

0

在从Python3的MySQL导入MySQLdb时,我遇到了这个问题:“Library not loaded: libmysqlclient.18.dylib”:

    Traceback (most recent call last):
  File "test.py", line 3, in <module>
    import MySQLdb
  File "/opt/local/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/MySQL_python-1.2.4-py3.5-macosx-10.11-x86_64.egg/MySQLdb/__init__.py", line 19, in <module>
    import _mysql
ImportError: dlopen(/opt/local/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/MySQL_python-1.2.4-py3.5-macosx-10.11-x86_64.egg/_mysql.cpython-35m-darwin.so, 2): Library not loaded: libmysqlclient.18.dylib
  Referenced from: /opt/local/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/MySQL_python-1.2.4-py3.5-macosx-10.11-x86_64.egg/_mysql.cpython-35m-darwin.so
  Reason: image not found

对我来说这个解决方案可行: Mac OS X 10.11.1 Python3.5

Edit ~/.bash_profile:
export PATH="/opt/local/Library/Frameworks/Python.framework/Versions/3.5/bin:$PATH"
export PATH="/opt/local/bin:/opt/local/sbin:$PATH"
export PATH="/usr/local/mysql/bin:$PATH"
export PATH="/usr/local/mysql/lib:$PATH"
sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib

0
我在使用“rails g model”命令时遇到了以下错误:
Library not loaded: libmysqlclient.18.dylib

我已经尝试过这个,它对我很有效。我当时使用的是Mavericks 10.9.5。

sudo ln -s /usr/local/mysql-5.6.19-osx10.7-x86_64/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib

谢谢!

现在我正在使用Yosemite 10.10.5,我遇到了同样的错误,所以我只需在终端上运行此命令,问题就成功解决了。

$ sudo ln -s /usr/local/mysql-5.6.26-osx10.8-x86_64/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib

你也可以尝试:

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

对我来说,它们两个都很好用。 希望它能对你有所帮助!


0

谢谢。Homebrew升级导致我的Mac上的Rails应用程序出现问题。我从源代码重新安装了MySQL(5.7),然后不得不这样做

sudo ln -s /usr/local/mysql-5.7.28-macos10.14-x86_64/lib/libmysqlclient.20.dylib /usr/lib/libmysqlclient.20bdylib

根据我上面所读的内容和我的Gemfile文件

gem 'mysql2', '0.5.3'

并且在 database.yml 文件中

adapter: mysql2

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