为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕沐林林 2019-12-09 15:13:01
我只是从Ruby(和Rails)开始。我使用http://ruby.railstutorial.org/ruby-on-rails-tutorial-book#sec:ruby gems 进行了设置rvm。我的一切都与sqlite配合良好。现在,我想尝试将其转换为MySQL,因为这是我大部分开发工作的基础。在我的Gemfile中,我已将sqlite替换为mysql2:group :development, :test do#  gem 'sqlite3', '1.3.5'  gem 'mysql2'  gem 'rspec-rails', '2.9.0'end但是,当我尝试在MySQL中为Rails创建数据库时,我得到了:$ rake db:create --tracerake 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我看过其他一些文章,建议通过家庭酿造重新安装MySQL(我的是通过可下载的DMG安装的),但是我不愿意这样做,因为我已经有其他非红宝石项目的其他数据库。实际上,我确实有Rails正在寻找的文件;它安装在中/usr/local/mysql/lib/libmysqlclient.18.dylib。告诉Rails如何定位的最佳方法是什么?
查看完整描述

3 回答

?
拉风的咖菲猫

TA贡献1995条经验 获得超2个赞

解决方案非常简单;将库路径添加到〜/ .bash_profile或〜/ .profile文件中:


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


查看完整回答
反对 回复 2019-12-09
?
阿波罗的战车

TA贡献1862条经验 获得超6个赞

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


在El Capitan中,/usr/lib/现在有一个受限制的标志,并且在不禁用安全性的情况下无法写入,因此我只是添加了链接/usr/local/lib。


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

Rails服务器再次正常运行。


查看完整回答
反对 回复 2019-12-09
?
HUX布斯

TA贡献1876条经验 获得超6个赞

尽管此问题的标题恰好描述了我遇到的问题,但情况与前面的答案中描述的情况有所不同,解决方案也是如此。


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


升级导致libmysqlclient.18.dylib被替换为libmysqlclient.20.dylib,但是mysql2gem仍然依赖于前者。


要解决此问题,我做了: gem uninstall mysql2 && gem install mysql2


查看完整回答
反对 回复 2019-12-09
  • 3 回答
  • 0 关注
  • 734 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信