库未加载:/usr/local/mysql/lib/libmysqlclient.18.dylib(LoadError)

3

我很长一段时间以来一直有关于Rails的问题,虽然我尝试了这里找到的类似问题的许多答案,但只有某些答案对某些错误有效,并且我一直被卡住了不能解决这个问题。我尝试了我找到的大部分相似问题的解决方案,最终决定自己提问。这个错误仅在启动特定项目的服务器时发生,而对于一个空的新Rails项目,服务器正常启动:

$ rails server
/Users/celorisoli/.rvm/gems/ruby-1.9.2-p320/gems/mysql2-0.3.11/lib/mysql2.rb:9:in    `require': dlopen(/Users/celorisoli/.rvm/gems/ruby-1.9.2-p320/gems/mysql2-0.3.11/lib/mysql2/mysql2.bundle, 9): Library not loaded: /usr/local/mysql/lib/libmysqlclient.18.dylib (LoadError)
Referenced from: /Users/celorisoli/.rvm/gems/ruby-1.9.2-p320/gems/mysql2-0.3.11/lib/mysql2/mysql2.bundle
Reason: no suitable image found.  Did find:
/usr/local/mysql/lib/libmysqlclient.18.dylib: mach-o, but wrong architecture
/usr/local/mysql/lib/libmysqlclient.18.dylib: mach-o, but wrong architecture
/usr/lib/libmysqlclient.18.dylib: mach-o, but wrong architecture - /Users/celorisoli/.rvm/gems/ruby-1.9.2-p320/gems/mysql2-0.3.11/lib/mysql2/mysql2.bundle
from /Users/celorisoli/.rvm/gems/ruby-1.9.2-p320/gems/mysql2-0.3.11/lib/mysql2.rb:9:in `<top (required)>'
from /Users/celorisoli/.rvm/gems/ruby-1.9.2-p320@global/gems/bundler-1.2.1/lib/bundler/runtime.rb:68:in `require'
from /Users/celorisoli/.rvm/gems/ruby-1.9.2-p320@global/gems/bundler-1.2.1/lib/bundler/runtime.rb:68:in `block (2 levels) in require'
from /Users/celorisoli/.rvm/gems/ruby-1.9.2-p320@global/gems/bundler-1.2.1/lib/bundler/runtime.rb:66:in `each'
from /Users/celorisoli/.rvm/gems/ruby-1.9.2-p320@global/gems/bundler-1.2.1/lib/bundler/runtime.rb:66:in `block in require'
from /Users/celorisoli/.rvm/gems/ruby-1.9.2-p320@global/gems/bundler-1.2.1/lib/bundler/runtime.rb:55:in `each'
from /Users/celorisoli/.rvm/gems/ruby-1.9.2-p320@global/gems/bundler-1.2.1/lib/bundler/runtime.rb:55:in `require'
from /Users/celorisoli/.rvm/gems/ruby-1.9.2-p320@global/gems/bundler-1.2.1/lib/bundler.rb:128:in `require'
from /Users/celorisoli/logbook/config/application.rb:7:in `<top (required)>'
from /Users/celorisoli/.rvm/gems/ruby-1.9.2-p320/gems/railties-3.2.6/lib/rails/commands.rb:53:in `require'
from /Users/celorisoli/.rvm/gems/ruby-1.9.2-p320/gems/railties-3.2.6/lib/rails/commands.rb:53:in `block in <top (required)>'
from /Users/celorisoli/.rvm/gems/ruby-1.9.2-p320/gems/railties-3.2.6/lib/rails/commands.rb:50:in `tap'
from /Users/celorisoli/.rvm/gems/ruby-1.9.2-p320/gems/railties-3.2.6/lib/rails/commands.rb:50:in `<top (required)>'
from script/rails:6:in `require'
from script/rails:6:in `<main>'

大多数答案都是帮助解决“找不到图像”的问题,但这里的错误是以下内容:

Reason: no suitable image found.  Did find:

http://www.blog.bridgeutopiaweb.com/post/how-to-fix-mysql-load-issues-on-mac-os-x/ 有帮助吗? - PiLHA
我之前尝试过针对链接中install_name的两个实例进行操作,但返回以下信息:install_name_tool: can't open file: /usr/local/bin/search (No such file or directory)或者install_name_tool: can't open file: /usr/local/bin/indexer (No such file or directory) - Marcelo Risoli
这些链接现在是 http://c.kat.pe/post/how-to-fix-mysql-load-issues-on-mac-os-x/ ... 我建议通过homebrew安装MySQL。 - kgpdeveloper
我也遇到了这些错误。你找到答案了吗? - fraxture
1个回答

3
您需要找到机器上实际存在的libmysqlclient.18.dylib,并使用正确的路径更新bundle。
例如,我的错误消息是:
/Users/rbotzer/.rvm/rubies/ruby-1.9.3-p392/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require': dlopen(/Users/rbotzer/.rvm/gems/ruby-1.9.3-p392/gems/mysql-2.9.1/lib/mysql/mysql_api.bundle, 9): Library not loaded: libmysqlclient.18.dylib (LoadError)
我在/usr/local/mysql-5.6.16-osx10.7-x86_64/lib/libmysqlclient.18.dylib找到了libmysqlclient.18.dylib。
现在更新bundle:
sudo install_name_tool -change libmysqlclient.18.dylib /usr/local/mysql-5.6.16-osx10.7-x86_64/lib/libmysqlclient.18.dylib ~/.rvm/gems/ruby-1.9.3-p392/gems/mysql-2.9.1/lib/mysql/mysql_api.bundle 这为我解决了问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接