首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >OSX上的rails + MySQL :库未加载: libmysqlclient.18.dylib

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

Stack Overflow用户
提问于 2012-05-12 03:33:47
回答 25查看 104.8K关注 0票数 121

我刚刚开始使用Ruby (和rails)。我使用rvm根据http://ruby.railstutorial.org/ruby-on-rails-tutorial-book#sec:ruby gem进行了设置。我用sqlite把一切都做得很好。

现在我想试着把东西转换成MySQL,因为这是我大部分的开发工作。在我的Gemfile中,我用mysql2替换了sqlite:

代码语言:javascript
复制
group :development, :test do
#  gem 'sqlite3', '1.3.5'
  gem 'mysql2'
  gem 'rspec-rails', '2.9.0'
end

但是当我尝试在MySQL中为rails创建DB时,我得到了:

代码语言:javascript
复制
$ 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安装的),但我不希望这样做,因为我已经有几个其他数据库用于其他非ruby项目。

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

EN

回答 25

Stack Overflow用户

回答已采纳

发布于 2012-06-01 17:19:53

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

代码语言:javascript
复制
MYSQL=/usr/local/mysql/bin
export PATH=$PATH:$MYSQL
export DYLD_LIBRARY_PATH=/usr/local/mysql/lib:$DYLD_LIBRARY_PATH

如果它仍然不工作(这对我来说是有效的):

代码语言:javascript
复制
sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib

有很多使用install_name_tool的博客,它们对我不起作用,因为我使用的是OSX:

代码语言:javascript
复制
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
票数 316
EN

Stack Overflow用户

发布于 2015-10-01 05:01:00

在埃尔卡皮坦我得到了ln: /usr/lib/libmysqlclient.18.dylib: Operation not permitted

在El Capitan中,/usr/lib/现在有一个受限制的标志,在不禁用安全性的情况下无法写入,所以我只需将链接放在/usr/local/lib中。

代码语言:javascript
复制
sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/local/lib/libmysqlclient.18.dylib

Rails服务器又可以正常运行了。

票数 126
EN

Stack Overflow用户

发布于 2016-01-12 14:39:46

虽然这个问题的标题准确地描述了我遇到的问题,但情况与前面答案中描述的情况不同,解决方案也不同。

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

这次升级导致libmysqlclient.18.dyliblibmysqlclient.20.dylib取代,但mysql2 gem仍然依赖于前者。

为了解决这个问题,我做到了:gem uninstall mysql2 && gem install mysql2

请注意,不同的自制托管库(see my own answer to this, for example)可能会出现类似的问题

票数 67
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10557507

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档