我一直在努力解决这个问题。
我在Snow Leopard机器上安装了Rails 3,gem,mysql。一切顺利,直到我创建了我的第一个项目并尝试运行
rails server
运行时我得到:
jontybrook$ rails server
/Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle: dlopen(/Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle, 9): Library not loaded: libmysqlclient.16.dylib (LoadError)
Referenced from: /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle
Reason: image not found - /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle
from /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2.rb:7
from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler/runtime.rb:64:in `require'
from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler/runtime.rb:64:in `require'
from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler/runtime.rb:62:in `each'
from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler/runtime.rb:62:in `require'
from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler/runtime.rb:51:in `each'
from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler/runtime.rb:51:in `require'
from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler.rb:112:in `require'
from /Users/jontybrook/Dropbox/CODING/simple_cms/config/application.rb:7
from /Library/Ruby/Gems/1.8/gems/railties-3.0.3/lib/rails/commands.rb:28:in `require'
from /Library/Ruby/Gems/1.8/gems/railties-3.0.3/lib/rails/commands.rb:28
from /Library/Ruby/Gems/1.8/gems/railties-3.0.3/lib/rails/commands.rb:27:in `tap'
from /Library/Ruby/Gems/1.8/gems/railties-3.0.3/lib/rails/commands.rb:27
from script/rails:6:in `require'
from script/rails:6
jontybrook$
据我所知,问题在于mysql2 gem。 MySQL似乎运行正常,我的Gemfile引用了mysql2,我的database.yml文件似乎也没问题。
错误提及
Reason: image not found - /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle
然而
jontybrook$ cd /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2
jontybrook$ ls
client.rb em.rb error.rb mysql2.bundle result.rb
MySQL2.bundle在那里!?
如果我使用旧的mysql gem,WEBrick会很好。但这不是理想的,是吗?
我已经尝试了谷歌可以给我的一切!任何帮助非常感谢。
答案 0 :(得分:392)
我从来没有能够得到任何这些答案为我工作,但这是我用来使它适合我的命令。这样,每次更新mysql时都不需要使用install_name_tool
sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
答案 1 :(得分:93)
我最终解决了这个问题!
我在RVM下重新安装了Ruby和Rails。我使用的是Ruby版本1.9.2-p136。
在rvm下重新安装后,此错误仍然存在。
最终解决它的魔术命令是:
sudo install_name_tool -change libmysqlclient.16.dylib /usr/local/mysql/lib/libmysqlclient.16.dylib ~/.rvm/gems/ruby-1.9.2-p136/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle
希望这有助于其他人!
答案 2 :(得分:88)
此修复程序对我来说非常有效:
将以下内容添加到〜/ .profile
export DYLD_LIBRARY_PATH=/usr/local/mysql/lib:$DYLD_LIBRARY_PATH
http://www.rickwargo.com/2010/12/16/installing-mysql-5-5-on-os-x-10-6-snow-leopard-and-rails-3/
答案 3 :(得分:39)
对我来说,这只是因为我升级了mysql但没有更新mysql2 gem - 重新安装gem会修复它......
gem pristine mysql2
答案 4 :(得分:26)
我有同样的问题。看起来它无法找到libmysqlclient库。对我有用的临时修复如下:
export DYLD_LIBRARY_PATH=/usr/local/mysql/lib/
我不确定配置指定加载路径的位置或设置的位置,但我的mysql安装似乎不在其中。如果我找到更持久的解决方案,我会再次发布。
编辑: 实际上this修正似乎可以更准确地解决问题。
答案 5 :(得分:24)
将以下内容添加到~/.bash_profile
:
export DYLD_LIBRARY_PATH=/usr/local/mysql/lib:$DYLD_LIBRARY_PATH
这对我有用
答案 6 :(得分:17)
执行此操作时,在OSX El Capitan更新中:
sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
它会抛出类似
的错误ln: /usr/lib/libmysqlclient.18.dylib: Operation not permitted
为避免这种情况,您可以先使用命令
找到libmysqlclient.18.dylib
User$ locate libmysqlclient.18.dylib
在我的情况下,它返回了/usr/local/mysql-5.5.24-osx10.5-x86_64/lib/libmysqlclient.18.dylib
因此,我们将usr/lib/
创建符号链接而不是usr/local/lib/
,而不是sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/local/lib/libmysqlclient.18.dylib
。
2015-01-01T10:10:09
答案 7 :(得分:13)
以下行适合我。我使用的是mac 10.7.2。
sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
答案 8 :(得分:10)
刚遇到这个问题。我所要做的就是卸载mysql2 gem并重新安装它。希望这适用于其他人
答案 9 :(得分:4)
这就是我的工作方式:
我跑了下面的命令
sudo install_name_tool -change libmysqlclient.18.dylib /usr/local/mysql/lib/libmysqlclient.18.dylib~ / .rvm / gems / ruby-1.9.2-p180 / gems / mysql2-0.2.7 / lib / mysql2 / mysql2.bundle
我的环境:
$ rails -v
Rails 3.0.6
$ mysql --version
mysql Ver 14.14 Distrib 5.5.11,osx10.6(i386)使用readline 5.1
$ ruby -v
ruby 1.9.2p180(2011-02-18修订版30909)[x86_64-darwin10.7.0]
希望这有助于某人。
答案 10 :(得分:3)
bundle install mysql --force
帮助了我。它重新安装了因brew uninstall mysql
而失去的依赖关系。
答案 11 :(得分:3)
我通过删除当前项目的gemset并重新创建它并重新运行bundle install来解决了这个问题。我想我是通过安装更新版本的mysql来引起它的。
答案 12 :(得分:3)
使用Django时遇到此问题,我使用brew
安装了很多我的开源程序,因为我使用brew
来安装mysql
,所以我需要执行以下操作:
sudo ln -s /usr/local/Cellar/mysql/5.5.20/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
请务必更换您的库版本!
答案 13 :(得分:3)
嗨,这对我来说是推荐的链接from Fredy Andersen
sudo install_name_tool -change libmysqlclient.16.dylib /usr/local/mysql /lib/libmysqlclient.16.dylib /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle
只需要在命令中更改为我的mysql版本, 感谢
答案 14 :(得分:3)
谢谢,Ogapo!导出该别名对我有用,然后我按照链接,在我的情况下,mysql2.bundle在/Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle中,所以我调整了install_name_tool来修改那个bundle而不是〜/ .rvm中的一个,并按照它应该的方式工作。
现在:
$ otool -L /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle
/Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle:
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/libruby.1.dylib (compatibility version 1.8.0, current version 1.8.7)
/usr/local/mysql/lib/libmysqlclient.16.dylib (compatibility version 16.0.0, current version 16.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 125.2.1)
答案 15 :(得分:2)
Jonty,我也在努力解决这个问题。
我认为这里有一个线索:
otool -L /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle
/Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle:
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/libruby.1.dylib (compatibility version 1.8.0, current version 1.8.7)
libmysqlclient.16.dylib (compatibility version 16.0.0, current version 16.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 125.2.1)
注意dylib的路径是,呃,相当短?
我正在试图找出gem安装说明离开dylib路径的位置,但由于我自己从未构建过gem,因此速度很慢。
如果我找到更多内容,我会发布更多内容!
答案 16 :(得分:2)
这通常发生在升级mysql时。在旧的mysql库上构建的已安装的mysql2 gem无法与新的库一起使用。只需重新安装即可。
使用gem uninstall mysql2
卸载mysql2。然后使用gem install mysql2
答案 17 :(得分:2)
我仍然发现,使用上面的解决方案,它不适用于(例如)使用TextMate的Rails插件。我收到了类似的错误(检索数据库架构时)。
那是什么,打开终端:
cd /usr/local/lib
sudo ln -s ../mysql-5.5.8-osx10.6-x86_64/lib/libmysqlclient.16.dylib .
将 mysql-5.5.8-osx10.6-x86_64 替换为您自己的路径(或mysql)。
这使得符号链接到lib,现在rails从命令行运行,以及TextMate插件,如 ruby-on-rails-tmbundle 。
要明确:这也解决了启动rails服务器时出现的错误。
答案 18 :(得分:2)
几天前我遇到了同样的问题。我最终设法解决了它。我不太确定如何,但我会告诉你我做了什么。也许它会帮助你。
我从下载RVM开始。如果您还没有使用它,我强烈建议您这样做。它基本上为Ruby,RoR和RubyGems的新单独安装创建了一个沙箱。实际上,您可以同时进行多次安装并立即切换到另一个。它就像一个魅力。
为什么这有用?因为你不应该在OS X中搞乱默认的Ruby安装。系统依赖于它。最好只保留默认的Ruby和RoR安装并使用RVM创建一个新的安装,您可以将其用于自己的开发。
一旦我创建了单独的Ruby安装,我就安装了RoR,RubyGems和mysql,并且它有效。对于我采取的确切步骤,请参阅我的问题:Installing Rails, MySQL, etc. everything goes wrong
再说一遍:我不确定这会解决你的问题。但它确实为我做了诀窍,无论如何使用RVM是非常值得推荐的。
答案 19 :(得分:1)
我的luvlss命令版本:
Mac OSX 10.10.5
MySQL 5.6.27
乘客5.0.21
sudo ln -s /usr/local/mysql-5.6.27-osx10.8-x86_64/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
如果你正在尝试许多不同的链接,就像我一样,做一些清理:
sudo unlink /usr/lib/libmysqlclient.18.dylib
答案 20 :(得分:1)
我通过在包含以下内容的项目文件夹中创建.npmrc文件解决了这个问题:
rvm use <yourrubie>
然后进入我的项目路径
cd ~/myprojectpath
然后我跑
bundle install
答案 21 :(得分:0)
如果你正在使用OSX并使用brew安装mysql,你可以:
brew link mysql
如果您遇到版本问题(我的宝石需要5.6.25时运行mysql 5.7),您可以
brew unlink mysql
brew switch mysql 5.6.25
答案 22 :(得分:0)
打开终端并运行以下命令:
export PATH=$PATH:/usr/local/mysql/bin
它应该有用。
答案 23 :(得分:0)
对我来说,我必须手动卸载mysql
brew uninstall mysql
rm -rf /usr/local/var/mysql
brew install mysql