Geo*_*old 113 ruby mysql macos ruby-on-rails
我刚刚开始使用Ruby(和rails).我按照http://ruby.railstutorial.org/ruby-on-rails-tutorial-book#sec:ruby gems 进行了设置rvm.我用sqlite做得很好.
现在我想尝试将事情转换为MySQL,因为这是我开发的大部分内容.在我的Gemfile中,我用mysql2替换了sqlite:
group :development, :test do
# gem 'sqlite3', '1.3.5'
gem 'mysql2'
gem 'rspec-rails', '2.9.0'
end
Run Code Online (Sandbox Code Playgroud)
但是当我尝试在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
Run Code Online (Sandbox Code Playgroud)
我已经看到其他帖子建议通过自制软件重新安装MySQL(我的是通过可下载的DMG安装的),但我不想这样做,因为我已经有其他几个非ruby项目的数据库了.
事实上我确实有Rails正在寻找的文件; 它安装在/usr/local/mysql/lib/libmysqlclient.18.dylib.告诉Rails如何找到它的最佳方法是什么?
小智 307
解决方案非常简单; 在〜/ .bash_profile或〜/ .profile文件中添加库路径:
MYSQL=/usr/local/mysql/bin
export PATH=$PATH:$MYSQL
export DYLD_LIBRARY_PATH=/usr/local/mysql/lib:$DYLD_LIBRARY_PATH
Run Code Online (Sandbox Code Playgroud)
如果它仍然不起作用(这项工作对我来说):
sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
Run Code Online (Sandbox Code Playgroud)
有许多博客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
Run Code Online (Sandbox Code Playgroud)
Tin*_*key 123
在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
Run Code Online (Sandbox Code Playgroud)
Rails服务器再次正常运行.
Giu*_*ppe 52
虽然这个问题的标题恰好描述了我遇到的问题,但情况与前面的答案中描述的情况不同,解决方案也是如此.
在我的情况下(El Capitan,通过自制软件安装mysql),brew update && brew upgrade导致mysql包升级到5.7.10(从5.6.x开始).
升级导致libmysqlclient.18.dylib被替换libmysqlclient.20.dylib,但mysql2宝石仍然依赖于前者.
为了解决我做的问题: gem uninstall mysql2 && gem install mysql2
请注意,不同的自制程序管理库可能会出现类似的问题(例如,请参阅我自己的答案)
Jos*_*eph 26
sudo ln -s /usr/local/mysql-5.5.25-osx10.6-x86_64/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
Run Code Online (Sandbox Code Playgroud)
这对我有用.我从dmg文件安装了MySQL.
小智 16
sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
Run Code Online (Sandbox Code Playgroud)
为我工作.所有类似的都没有.
sea*_*cal 11
在完全删除然后重新安装MySQL之后我遇到了这个问题.特别:
Library not loaded: /usr/local/opt/mysql/lib/libmysqlclient.20.dylib
Run Code Online (Sandbox Code Playgroud)
我甚至没有碰过我的Rails应用程序.
重新安装mysql2gem解决了这个问题.
$ gem uninstall mysql2
$ gem install mysql2 -v 0.3.18 # (specifying the version found in my Gemfile.lock)
Run Code Online (Sandbox Code Playgroud)
[MySQL 5.7.10,Rails 4.0.0,Ruby 2.0.0,Mac OS X Yosemite 10.10]
小智 9
如果您使用的是从El Capitan的HomeBrew安装的MySQL,那么您应该按如下方式链接它:
sudo ln -sf /usr/local/Cellar/mysql/5.6.27/lib/libmysqlclient.18.dylib /usr/local/lib/libmysqlclient.18.dylib
Run Code Online (Sandbox Code Playgroud)
对于从小牛队的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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
91919 次 |
| 最近记录: |