Phi*_*hil 24 ruby mysql gem ruby-on-rails
我刚刚编译了ruby并安装了rubygems,mysql2和rails,它们工作得很好.但每当我尝试启动rails服务器时,我都会收到以下错误消息:
/usr/local/ruby/lib/ruby/gems/1.9.1/gems/mysql2-0.2.6/lib/mysql2.rb:7:in `require': dlopen(/usr/local/ruby/lib/ruby/gems/1.9.1/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle, 9): Library not loaded: libmysqlclient.18.dylib (LoadError) Referenced from: /usr/local/ruby/lib/ruby/gems/1.9.1/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle Reason: image not found - /usr/local/ruby/lib/ruby/gems/1.9.1/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle from /usr/local/ruby/lib/ruby/gems/1.9.1/gems/mysql2-0.2.6/lib/mysql2.rb:7:in `' from /usr/local/ruby/lib/ruby/gems/1.9.1/gems/bundler-1.0.10/lib/bundler/runtime.rb:68:in `require' from /usr/local/ruby/lib/ruby/gems/1.9.1/gems/bundler-1.0.10/lib/bundler/runtime.rb:68:in `block (2 levels) in require' from /usr/local/ruby/lib/ruby/gems/1.9.1/gems/bundler-1.0.10/lib/bundler/runtime.rb:66:in `each' from /usr/local/ruby/lib/ruby/gems/1.9.1/gems/bundler-1.0.10/lib/bundler/runtime.rb:66:in `block in require' from /usr/local/ruby/lib/ruby/gems/1.9.1/gems/bundler-1.0.10/lib/bundler/runtime.rb:55:in `each' from /usr/local/ruby/lib/ruby/gems/1.9.1/gems/bundler-1.0.10/lib/bundler/runtime.rb:55:in `require' from /usr/local/ruby/lib/ruby/gems/1.9.1/gems/bundler-1.0.10/lib/bundler.rb:120:in `require' from /Users/filzo/Documents/rails/blog/config/application.rb:7:in `' from /usr/local/ruby/lib/ruby/gems/1.9.1/gems/railties-3.0.5/lib/rails/commands.rb:28:in `require' from /usr/local/ruby/lib/ruby/gems/1.9.1/gems/railties-3.0.5/lib/rails/commands.rb:28:in `block in ' from /usr/local/ruby/lib/ruby/gems/1.9.1/gems/railties-3.0.5/lib/rails/commands.rb:27:in `tap' from /usr/local/ruby/lib/ruby/gems/1.9.1/gems/railties-3.0.5/lib/rails/commands.rb:27:in `' from script/rails:6:in `require' from script/rails:6:in `'
我尝试了几种可能的解决方案(例如:http: //railsforum.com/viewtopic.php?pid = 23125#23125 with libmysqlclient.18.dylib); 但没有什么对我有用.我希望你能帮助我.
编辑:这似乎解决了我的问题:
sudo install_name_tool -change libmysqlclient.18.dylib /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/local/ruby/lib/ruby/gems/1.9.1/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle
Run Code Online (Sandbox Code Playgroud)
无论如何; 它是MySQL或ruby代码中的错误吗?
Rit*_*mar 32
一种简单而最好的方法是通过命令创建软链接 -
sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
Run Code Online (Sandbox Code Playgroud)
http://rorguide.blogspot.com/2011/07/getting-error-library-not-loaded.html
Guy*_*ing 15
这似乎是MySQL二进制发行版中已知(并且未修复!)的错误.
虽然运行install_name_tool你的mysql2.bundle文件会起作用,如果你删除并重建它们,你就会回到原点.此外,您必须将此修复程序应用于链接它的任何其他内容.更好的解决方案是解决库本身的问题:
$ sudo install_name_tool -id \
/usr/local/mysql/lib/libmysqlclient.18.dylib \
/usr/local/mysql-5.5.12-osx10.6-x86_64/lib/libmysqlclient.18.dylib
Run Code Online (Sandbox Code Playgroud)
删除并重建mysql2 gem:
$ gem uninstall mysql2
$ gem install mysql2
Run Code Online (Sandbox Code Playgroud)
...将获取对库的更改,一切都应该正常工作,而不必修改任何环境变量.
小智 13
如果您在Mac OS X上使用RVM(一个很好的选择) - 这是最终适合我的魔术命令.
sudo install_name_tool -change libmysqlclient.18.dylib /usr/local/mysql/lib/libmysqlclient.18.dylib /Users/*USERNAME*/.rvm/gems/ruby-1.9.2-p180/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle
Run Code Online (Sandbox Code Playgroud)
根据您当前的设置,在语法中替换USERNAME.如果您的mysql gem版本不同,那么也会改变.
| 归档时间: |
|
| 查看次数: |
15110 次 |
| 最近记录: |