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.dylib
被libmysqlclient.18.dylib
replace,但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