【问题标题】:MySQL gem problem after upgrading to Snow LeopardMySQL gem 升级到 Snow Leopard 后的问题
【发布时间】:2011-06-01 01:28:20
【问题描述】:

刚刚升级到雪豹。经过一番折腾后,我设法启动并运行了 MySQL。

现在我正在尝试让我的 Rails 环境正常工作。对于我正在使用 Rails 3.0.3 和 Ruby 1.8.7

的项目

我已经使用以下命令安装了 MySQL2 gem:

sudo gem install mysql2 -- --with-mysql-config=/usr/local/mysql/bin/mysql_config

当我启动 Rails 服务器时,我收到以下错误:

/Users/lee/.rvm/gems/ruby-1.8.7-head/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle: dlopen(/Users/lee/.rvm/gems/ruby-1.8.7-head/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle, 9): no suitable image found.  Did find: (LoadError)
/Users/lee/.rvm/gems/ruby-1.8.7-head/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle: mach-o, but wrong architecture - /Users/lee/.rvm/gems/ruby-1.8.7-head/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle
from /Users/lee/.rvm/gems/ruby-1.8.7-head/gems/mysql2-0.2.6/lib/mysql2.rb:7

有没有人遇到过类似的问题并且知道如何解决这个问题? 我更像是一名设计师而不是开发人员,所以这不是我的强项。感谢任何指针。

【问题讨论】:

    标签: mysql ruby-on-rails ruby osx-snow-leopard gem


    【解决方案1】:

    卸载/删除所有 rvm、ruby 和 rails 实例,然后按照本指南进行全新安装: http://www.cowboycoded.com/2010/12/04/setting-up-rails-3-on-mac-osx-snow-leopard-10-6-4/

    一切正常。万岁!

    还曾在某个阶段降级 MySQL,因此不确定这是否会影响最终结果。

    【讨论】:

      【解决方案2】:

      升级到 Snow Leopard 后,我昨天刚刚用其他一些宝石经历了类似的事情。我遇到了非常相似的错误,因为它在 SL 寻找 64 位版本时尝试使用旧的 32 位库。首先,确保您已安装 64 位版本的 MySQL,因为您现在将使用它。

      然后,得到我的东西:gem uninstall mysql2

      原来我安装了两次 gem,Rails 试图加载错误的(32 位)版本,即使我在其他地方安装了正确的版本。

      另外,当你安装 mysql gem 时,你可能想尝试一下

      export ARCHFLAGS="-arch i386 -arch x86_64"
      

      在你 sudo gem 安装 mysql2 之前

      【讨论】:

        【解决方案3】:

        有几件事要做:

        如果您没有在 RVM 的控制下重新编译 Ruby,您会想要这样做。在 Snow Leopard 之前,它们会编译为 i386 32 位应用程序。之后,它们需要是 x86 64 位。因此,在 Ruby 1.8.7 上使用 RVM 执行 rvm uninstall,然后再次使用 rvm install。你可以通过运行rvm list来检查你是否需要这样做:

        rvm list
        
        rvm rubies
        
           ruby-1.8.7-p330 [ x86_64 ]
        => ruby-1.9.2-p136 [ x86_64 ]
        

        Ruby,无论是 1.8.7 还是 1.9+,在为 Snow Leopard 正确配置后将是 x86_64。

        之后你可以运行gem pristine 来重建你所有的gem。作为该过程的一部分,它将重建本机驱动程序,该驱动程序也应重新编译为 x86_64。

        此外,让您的 RVM 保持最新也是一个好主意。截至今晚,最新版本是 v1.1.13,所以如果您的版本较旧,您可能需要 rvm get head 来赶上它。

        有助于诊断的有用命令是:gem envrvm info

        【讨论】:

          【解决方案4】:

          我最近遇到了一个类似的问题,在启动 rails 控制台或 rails 服务器时,rails 抛出“但错误的架构没有找到合适的图像”错误。

          在 associatd .dylib 文件和 gem 上运行 file 通常会返回适用的 x86_64 版本或包含它的通用版本。最终,我将其追溯到我正在运行的 Ruby 的实际版本。 /usr/bin/ruby 可执行文件本身仅与 i386 兼容。这真是令人震惊,因为我认为新的 xcode 和 osx 10.7 会给我带来 64 位 ruby​​。

          使用 RVM,我安装了另一个 ruby​​ 实例(同样是 1.8.7)。这样做需要我安装一个新的 readline 实例(为此我使用自制软件,:brew install readline)并使用rvm install 1.8.7 --with-readline-dir=/usr/local/Cellar/readline/6.2.1/ 安装 rvm。

          完成此操作并切换到使用我的新 ruby​​ 实例 (rvm use 1.8.7) 后,我所有的 gem 都消失了(RVM 安装不知何故更改了我的默认 gem_path。)gem install rake,然后是 gem install bundler,然后是 @ 987654328@ 让我启动并运行。

          长话短说,确保您的 ruby​​ 可执行文件与您的 ruby​​/rails 包所内置的指令集版本相匹配。

          这篇博文也很有帮助: http://www.markhneedham.com/blog/2010/07/08/installing-ruby-1-9-2-with-rvm-on-snow-leopard/

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2010-11-24
            • 2011-06-18
            • 2010-11-24
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2010-11-24
            • 1970-01-01
            相关资源
            最近更新 更多