rails + OSX上的MySQL:Library未加载:libmysqlclient.18.dylib

我刚刚开始使用Ruby(和rails)。 我使用rvm根据http://ruby.railstutorial.org/ruby-on-rails-tutorial-book#sec:ruby gems进行了rvm 。 我有一切与sqlite工作得很好。

现在我想尝试将其转换为MySQL,因为这正是我所做的大部分工作。 在我的Gemfile中,我用mysql2replace了sqlite:

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

但是当我尝试在MySQL中为rails创build数据库时,我得到:

 $ 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 

我见过其他的post,build议通过homebrew重新安装MySQL(我通过可下载的DMG安装),但是我不想这样做,因为我已经有其他几个其他非Ruby项目的其他数据库。

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

解决scheme非常简单, 在〜/ .bash_profile或〜/ .profile文件中添加库path:

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

如果还不行(这项工作对我来说):

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

有许多使用install_name_tool博客,因为我在OSX Lion上,所以不适合我。

 sudo install_name_tool -change libmysqlclient.18.dylib /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/local/bin/indexer sudo install_name_tool -change libmysqlclient.18.dylib /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/local/bin/search 

在El Capitan,我得到了ln: /usr/lib/libmysqlclient.18.dylib: Operation not permitted

在埃尔卡皮坦/usr/lib/现在有一个限制标志,不能被写入没有禁用安全,所以我只是把链接在/usr/local/lib而不是。

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

Rails服务器再次运行良好。

 sudo ln -s /usr/local/mysql-5.5.25-osx10.6-x86_64/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib 

这对我有效。 我从一个dmg文件安装MySQL。

虽然这个问题的题目正好描述了我遇到的问题,但是情况与前面的答案中描述的情况不同,解决scheme也是如此。

在我的情况下(El Capitan,通过自制软件安装mysql), brew update && brew upgrade导致mysql包升级到5.7.10(从5.6.x开始)。

升级导致libmysqlclient.18.dyliblibmysqlclient.18.dylibreplace,但mysql2 gem依然依赖于前者。

要解决我做的问题: gem uninstall mysql2 && gem install mysql2

请注意,不同的自制软件pipe理的库可能会出现类似的问题( 例如,请参阅我自己的答案 )

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

为我工作。 所有类似的都没有。

如果您使用El Capitan中的HomeBrew安装的MySQL,那么您应该如下链接它:

 sudo ln -sf /usr/local/Cellar/mysql/5.6.27/lib/libmysqlclient.18.dylib /usr/local/lib/libmysqlclient.18.dylib 

在Mavericks上从DMG安装MySql 5.6

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

我彻底删除后,遇到了这个问题,然后全新安装MySQL。 特别:

 Library not loaded: /usr/local/opt/mysql/lib/libmysqlclient.20.dylib 

我甚至没有碰到我的Rails应用程序。

重新安装mysql2 gem解决了这个问题。

 $ gem uninstall mysql2 $ gem install mysql2 -v 0.3.18 # (specifying the version found in my Gemfile.lock) 

[MySQL 5.7.10,Rails 4.0.0,Ruby 2.0.0,Mac OS X Yosemite 10.10]

我确认阿布舍克的补丁确实有效。

它也适用于优胜美地。

注意:不是链接到特定版本的mysql,而是使用事实上mysql已经build立的符号链接:

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

这个解决scheme适用于Xcode和C API。

确定需要什么符号链接(取决于MySQL版本和操作系统版本):

 $ locate libmysqlclient.18.dylib /usr/local/mysql-5.6.24-osx10.8-x86_64/lib/libmysqlclient.18.dylib 

所以 :

 ln -s /usr/local/mysql-5.6.24-osx10.8-x86_64/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib 

我正在使用Rails的稀土元素(2.3.4)为我们有一个遗留系统。 升级到El Capitan后,运行脚本/控制台发出错误,我的应用程序将不再启动(使用pow):

 $ script/console Loading development environment (Rails 2.3.4) /blah-blah/gems/activerecord-2.3.4/lib/active_record/connection_adapters/abstract/connection_specification.rb:76:in establish_connection:RuntimeError: Please install the mysql2 adapter: gem install activerecord-mysql2-adapter (dlopen(/blah-blah/gems/mysql2-0.2.19b4/lib/mysql2/mysql2.bundle, 9): Library not loaded: libmysqlclient.18.dylib Referenced from: /blah-blah/gems/mysql2-0.2.19b4/lib/mysql2/mysql2.bundle Reason: image not found - /blah-blah/gems/mysql2-0.2.19b4/lib/mysql2/mysql2.bundle) 

从上面的这个线程中,我确定我需要在terminal中发出这个命令:
sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
此命令产生一个错误:“ln:/usr/lib/libmysqlclient.18.dylib:操作不允许”。 我从来没有见过这个错误。

经过相当多的挖掘,我发现这篇文章: http : //www.macworld.com/article/2986118/security/how-to-modify-system-integrity-protection-in-el-capitan.html和跟着closuresSIP(El Capitan的新系统完整性保护)的说明。 closuresSIP后,重新启动后,ln命令工作正常。 然后我把SIP关掉。 现在一切都很好。 我的应用程序再次运行pow和运行脚本/控制台没有错误。 我希望这可以帮助你。

这适用于我:

 ln -s /usr/local/Cellar/mysql/5.6.22/lib/libmysqlclient.18.dylib /usr/local/lib/libmysqlclient.18.dylib 
 gem uninstall -aIx 

 bundle install 

为我工作。

从你的命令行使用这个:

 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 

在特立独行的几台电脑上试用总是有效的

如果您使用的是Bitnami RubyStack并且遇到类似的问题。 试试这个

 sudo ln -s /Applications/rubystack-2.0.0-17/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib 

我加载该软件包文件的问题是一个糟糕的符号链接。 所以检查链接,并根据需要更换一个新的链接。 一切都在那个地方。 不知道这是怎么发生的,但确实如此。 第一次发生这样的语法错误。

我正在使用rails g模型命令,我得到了这个错误:

 Library not loaded: libmysqlclient.18.dylib 

我已经尝试过,它为我运作。 我正在使用小牛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,而且我得到了同样的错误,所以我只是在terminal上运行了这个命令。

 $ 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 

他们两个都适合我。 希望它可以是有用的!

从MySQL导入MySQLdb时出现“Library not loaded:libmysqlclient.18.dylib”这个问题对于python3 :

  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 

解决scheme适用于我: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 

唯一对我有用的是:

 sudo install_name_tool -change libmysqlclient.18.dylib \ /usr/local/mysql-5.6.23-osx10.8-x86_64/lib/libmysqlclient.18.dylib \ /Library/Ruby/Gems/2.0.0/gems/mysql2-0.4.3/lib/mysql2/mysql2.bundle 

replaceMySQL和gem的path,以适应您的系统。

经过大量的search和尝试以上所有…唯一解决我的问题是这个命令:

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

我正在使用MacBook Pro,OSX 10 El Capitan。 达尔文xxxx-MacBook-Pro.local 15.6.0达尔文内核版本15.6.0:星期四6月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

在Mac Sierra上,如果使用Homebrew,请执行以下操作:

 sudo ln -s /usr/local/Cellar/mysql@5.6/5.6.34/lib/libmysqlclient.18.dylib /usr/local/lib/libmysqlclient.18.dylib 

对于那些正在使用酿造。 只需用“–force”选项连接你的mysql版本。

 brew link mysql56 --force