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

我只是从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 --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

我看过其他一些文章,建议通过家庭酿造重新安装MySQL(我的是通过可下载的DMG安装的),但是我不愿意这样做,因为我已经有其他非红宝石项目的其他数据库。


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


慕沐林林
浏览 737回答 3
3回答

拉风的咖菲猫

解决方案非常简单;将库路径添加到〜/ .bash_profile或〜/ .profile文件中:MYSQL=/usr/local/mysql/binexport PATH=$PATH:$MYSQLexport 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/indexersudo 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在El Capitan中,/usr/lib/现在有一个受限制的标志,并且在不禁用安全性的情况下无法写入,因此我只是添加了链接/usr/local/lib。sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/local/lib/libmysqlclient.18.dylibRails服务器再次正常运行。

HUX布斯

尽管此问题的标题恰好描述了我遇到的问题,但情况与前面的答案中描述的情况有所不同,解决方案也是如此。在我的情况下(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
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

MySQL
Ruby