我一直在努力解决这个问题 .
我在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就可以了 . 但这不是理想的,是吗?
我试过谷歌可以给我的一切!任何帮助非常感谢 .
24 回答
这个修复程序对我很有用:
将以下内容添加到〜/ .profile中
http://www.rickwargo.com/2010/12/16/installing-mysql-5-5-on-os-x-10-6-snow-leopard-and-rails-3/
我从来没有能够得到任何这些答案为我工作,但这是我用来使它适合我的命令 . 这样,每次更新mysql时都不需要使用install_name_tool
对我来说这只是因为我升级了mysql但没有更新mysql2宝石 - 重新安装宝石将修复它...
gem pristine mysql2
我终于解决了这个问题!
我在RVM下重新安装了Ruby和Rails . 我使用的是Ruby版本1.9.2-p136 .
在rvm下重新安装后,此错误仍然存在 .
最后解决它的魔术命令是:
希望这有助于其他人!
我有同样的问题 . 看起来它无法找到libmysqlclient库 . 对我有用的临时修复如下:
我不确定配置在哪里指定加载路径或它设置的内容但我的mysql安装似乎不在其中 . 如果我找到一个更永久的解决方案,我会再次发布 .
编辑:实际上this修复似乎更准确地解决了问题 .
将以下内容添加到
~/.bash_profile
:这对我有用
在执行此操作时,在OSX El Capitan更新中:
它会抛出一个错误
所以为了避免这种情况,你可以做的是首先使用命令找到
libmysqlclient.18.dylib
在我的情况下它返回
/usr/local/mysql-5.5.24-osx10.5-x86_64/lib/libmysqlclient.18.dylib
因此,我们将创建符号链接到
usr/local/lib/
而不是usr/lib/
,如下所示:更多细节:https://forums.developer.apple.com/thread/7935
以下行适合我 . 我正在使用mac 10.7.2 .
sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
刚遇到这个问题 . 我所要做的就是卸载mysql2 gem并重新安装它 . 希望这适用于其他人
这是它对我有用的方式:
我跑了下面的命令
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]
希望这有助于某人 .
谢谢,Ogapo!导出该别名对我有用,然后我按照链接,在我的情况下,mysql2.bundle在/Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle中,所以我调整了install_name_tool以修改该包而不是〜/ .rvm中的一个包,并按照它应该完成的方式工作 .
所以现在:
嗨,这对我来说是推荐的链接from Fredy Andersen
只需要在命令中更改为我的mysql版本,谢谢
我通过删除当前项目的gemset并重新创建它并重新运行bundle install来解决了这个问题 . 我想我是通过安装更新版本的mysql来实现的 .
我在使用Django时遇到了这个问题,我使用
brew
安装了很多我的开源程序,因为我使用brew
来安装mysql
所以我需要执行以下操作:请务必更换您的库版本!
bundle install mysql --force
帮助了我 . 它重新安装了由于brew uninstall mysql
而导致的依赖关系 .Jonty,我也在努力解决这个问题 .
我认为这里有一个线索:
请注意,dylib的路径是,呃,相当短?
我试图找出gem安装说明离开dylib路径的位置,但它很慢,因为我自己从未构建过gem .
如果我发现,我会发布更多更多!
几天前我遇到了同样的问题 . 我最终设法解决了它 . 我不太确定如何,但我会告诉你我做了什么 . 也许它会帮助你 .
我开始下载RVM . 如果您还没有使用它,我强烈建议您这样做 . 它基本上为Ruby,RoR和RubyGems的新单独安装创建了一个沙箱 . 实际上,您可以同时进行多次安装并立即切换到另一个 . 它就像一个魅力 .
为什么这有用?因为你不应该在OS X中搞乱默认的Ruby安装 . 系统依赖于它 . 最好只保留默认的Ruby和RoR安装,并使用可用于自己开发的RVM创建一个新安装 .
一旦我创建了单独的Ruby安装,我就安装了RoR,RubyGems和mysql,并且它工作正常 . 对于我采取的确切步骤,请参阅我的问题:Installing Rails, MySQL, etc. everything goes wrong
再说一遍:我不确定这会解决你的问题 . 但它确实为我做了诀窍,无论如何使用RVM是非常值得推荐的 .
我仍然发现,使用上面的解决方案,它不适用于(例如)使用TextMate的Rails插件 . 我收到类似的错误(检索数据库架构时) .
那是什么,打开终端:
用您自己的路径(或mysql)替换 mysql-5.5.8-osx10.6-x86_64 .
这使得符号链接到lib,现在rails从命令行运行,以及像ruby-on-rails-tmbundle这样的TextMate插件 .
需要说明的是:这也解决了启动rails服务器时出现的错误 .
这通常发生在升级mysql时 . 在旧的mysql库上构建的已安装的mysql2 gem无法与新的库一起使用 . 只需要重新安装它 .
使用
gem uninstall mysql2
卸载mysql2 . 然后用gem install mysql2
安装它我通过在我的项目文件夹中创建.rvmrc文件来解决它:
然后进入我的项目路径
然后我跑了
我的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
如果您使用OSX并使用brew安装了mysql,您可以:
如果您遇到版本问题(我的宝石需要5.6.25时运行mysql 5.7),您可以
打开 Terminal 并运行以下命令:
它应该工作 .
对我来说,我不得不手动卸载mysql