【问题标题】:Snow Leopard + Ruby 1.9.1 + MySQL Gem = Huge problemsSnow Leopard + Ruby 1.9.1 + MySQL Gem = 巨大的问题
【发布时间】:2010-11-24 09:16:33
【问题描述】:

我尝试了大约 3-4 个小时,试图让 mysql gem 安装到雪豹上的 ruby​​ 1.9.1。在我升级到雪豹之前,mysql gem 在 1.9.1 上可以正常工作。我从我的机器上卸载了 MySQL 服务器和 gem。然后我下载并安装:mysql-5.1.37-osx10.5-x86_64.dmg。我已经能够断言我安装的这个新版本是作为 64 位应用程序运行的。

我卸载了 mysql gem。当我尝试使用此命令安装 gem 时:

env ARCHFLAGS="-arch x86_64" gem install mysql --verbose -- --with-mysql-config=/usr/local/mysql/bin/mysql_config

我收到了这个错误:

GET 304 未修改:http://gems.rubyforge.org/latest_specs.4.8.gz 获得 200 好:http://gems.github.com/latest_specs.4.8.gz 安装 gem mysql-2.8.1 /Users/sean/.gem/ruby/1.9.1/gems/mysql-2.8.1/COPYING /Users/sean/.gem/ruby/1.9.1/gems/mysql-2.8.1/COPYING.ja /Users/sean/.gem/ruby/1.9.1/gems/mysql-2.8.1/History.txt /Users/sean/.gem/ruby/1.9.1/gems/mysql-2.8.1/Manifest.txt /Users/sean/.gem/ruby/1.9.1/gems/mysql-2.8.1/README.txt /Users/sean/.gem/ruby/1.9.1/gems/mysql-2.8.1/Rakefile /Users/sean/.gem/ruby/1.9.1/gems/mysql-2.8.1/ext/mysql_api/extconf.rb /Users/sean/.gem/ruby/1.9.1/gems/mysql-2.8.1/ext/mysql_api/mysql.c /Users/sean/.gem/ruby/1.9.1/gems/mysql-2.8.1/extra/README.html /Users/sean/.gem/ruby/1.9.1/gems/mysql-2.8.1/extra/README_ja.html /Users/sean/.gem/ruby/1.9.1/gems/mysql-2.8.1/extra/tommy.css /Users/sean/.gem/ruby/1.9.1/gems/mysql-2.8.1/lib/mysql.rb /Users/sean/.gem/ruby/1.9.1/gems/mysql-2.8.1/tasks/gem.rake /Users/sean/.gem/ruby/1.9.1/gems/mysql-2.8.1/tasks/native.rake /Users/sean/.gem/ruby/1.9.1/gems/mysql-2.8.1/tasks/vendor_mysql.rake /Users/sean/.gem/ruby/1.9.1/gems/mysql-2.8.1/test/test_mysql.rb 构建原生扩展。这可能需要一段时间... 错误:安装mysql时出错: 错误:无法构建 gem 原生扩展。 /Users/sean/.rvm/ruby-1.9.1-p243/bin/ruby extconf.rb --with-mysql-config=/usr/local/mysql/bin/mysql_config 检查 mysql_ssl_set()... 是 检查 rb_str_set_len()... 否 检查 rb_thread_start_timer()... 否 检查mysql.h ...是的 创建 Makefile 制作 gcc -I。 -I/Users/sean/.rvm/ruby-1.9.1-p243/include/ruby-1.9.1/i386-darwin9.8.0 -I/Users/sean/.rvm/ruby-1.9.1-p243/include /ruby-1.9.1/ruby/backward -I/Users/sean/.rvm/ruby-1.9.1-p243/include/ruby-1.9.1 -I。 -DHAVE_MYSQL_SSL_SET -DHAVE_MYSQL_H -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -I在/ usr /本地/ mysql /下包括-g -Os -arch x86_64的-fno-共同-D_P1003_1B_VISIBLE -DSIGNAL_WITH_VIO_CLOSE -DSIGNALS_DONT_BREAK_READ -DIGNORE_SIGHUP_SIGQUIT -DDONT_DECLARE_CXA_PURE_VIRTUAL -fno常见-02 -g -Wall - 无括号 -fno-common -pipe -fno-common -o mysql.o -c mysql.c 在 /Users/sean/.rvm/ruby-1.9.1-p243/include/ruby-1.9.1/ruby.h:32 包含的文件中, 从 mysql.c:5: /Users/sean/.rvm/ruby-1.9.1-p243/include/ruby-1.9.1/ruby/ruby.h:在函数“INT2NUM”中: /Users/sean/.rvm/ruby-1.9.1-p243/include/ruby-1.9.1/ruby/ruby.h:464:警告:由于数据类型范围有限,比较总是正确的 /Users/sean/.rvm/ruby-1.9.1-p243/include/ruby-1.9.1/ruby/ruby.h:464:警告:由于数据类型范围有限,比较总是正确的 /Users/sean/.rvm/ruby-1.9.1-p243/include/ruby-1.9.1/ruby/ruby.h:在函数“UINT2NUM”中: /Users/sean/.rvm/ruby-1.9.1-p243/include/ruby-1.9.1/ruby/ruby.h:472:警告:由于数据类型范围有限,比较总是正确的 mysql.c:在函数“escape_string”中: mysql.c:290:错误:需要左值作为赋值的左操作数 mysql.c:290:错误:需要左值作为赋值的左操作数 mysql.c:在函数“real_escape_string”中: mysql.c:434:错误:需要左值作为赋值的左操作数 mysql.c:434:错误:需要左值作为赋值的左操作数 make: *** [mysql.o] 错误 1 Gem 文件将继续安装在 /Users/sean/.gem/ruby/1.9.1/gems/mysql-2.8.1 以供检查。 结果记录到 /Users/sean/.gem/ruby/1.9.1/gems/mysql-2.8.1/ext/mysql_api/gem_make.out

我已经尝试了从以下链接中阅读的所有内容。

  1. http://void-design.net/2009/08/05/ruby-191-mysql-and-a-snow-leopard/
  2. http://www.schmidp.com/2009/06/14/rubyrails-and-mysql-on-snow-leopard-10a380/
  3. Rails, MySQL and Snow Leopard

有什么想法吗?

【问题讨论】:

标签: mysql ruby macos rubygems


【解决方案1】:

Sean,我看到您在 rvm 下运行 Ruby 1.9.1。我在相同的设置(Snow Leopard、rvm、MySQL 64 位包)下遇到了同样的问题。所有备用 gem(mysqlplus、kwatch-mysql-ruby 等)都失败并出现相同的错误。

我怀疑安装了 MySQL,但在系统默认的 Ruby 下,一切都像冠军一样工作。所以我想知道 rvm 是否不是万能扳手。

编辑:我想通了。我在升级到 Snow Leopard 之前安装了 rvm,所以我的 Ruby 1.9.1 安装需要重新编译。为了更好地衡量,我从头开始重新安装了 rvm。

这就是我所做的:

sudo gem uninstall rvm
rm -rf ~/.gem
sudo gem install rvm
rvm-install
rvm install 1.9.1
rvm 1.9.1
env ARCHFLAGS="-arch x86_64" gem install mysql

(注意:在 rvm 下安装 gems 时不能使用 sudo,因为 rvm 通过修改 $PATH 来工作。)

(注意:我将 /usr/local/mysql/bin 添加到我的 $PATH 中,因此在安装 mysql gem 时不必指定任何那些糟糕的命令行参数。)

mysql gem 安装顺利。

【讨论】:

  • gravelpup,谢谢。那是完美的。我喜欢 RVM,您的解决方案成功了。
  • 太棒了,很高兴听到它。现在,如果我可以让我的 ImageMagick 端口编译...我想我会开始另一个关于该主题的线程。
  • 我在升级到 Snow Leopard 的 rvm 下安装 ruby​​ 1.9.1 的 mysql gem 时遇到了同样的问题。我尝试了乔纳森的建议,但无济于事。多一点挖掘,似乎你需要 rm -rf ~/.rvm 而不是 rm -rf ~/.gem 因为那是 rvm 存储 vm 特定宝石的地方。
  • 注:这也解决了 ruby​​ 1.9.2 下的一个问题,即尝试重新安装 mysql gem 会导致开发人员工具未安装的错误,即使它们
  • rvm list 将向您展示已安装的 Rubies,以及编译它们的架构。对于 Snow Leopard,您应该有“x86_64”,如果您安装在以前版本的操作系统上,那么它不会是好的。几周前我遇到了这个问题,并询问是否有办法让 RVM 就地重新编译。答案是你必须卸载有问题的 Ruby(rvm uninstall 1.9.1 然后重新安装它。然后你可以重新加载 gem,因为它们应该是完整的。有些可能也被编译为错误的架构,所以你必须 @987654326 @那些也是。
【解决方案2】:

我通过从 MacPorts 安装 MySQL 解决了这个问题,然后运行与您相同的 gem install 命令。

所以,首先,从包中卸载你的 MySQL:

sudo rm /usr/local/mysql
sudo rm -rf /usr/local/mysql*
sudo rm -rf /Library/StartupItems/MySQLCOM
sudo rm -rf /Library/PreferencePanes/My*
edit /etc/hostconfig and remove the line MYSQLCOM=-YES-
rm -rf ~/Library/PreferencePanes/My*
sudo rm -rf /Library/Receipts/mysql*
sudo rm -rf /Library/Receipts/MySQL*

如果您还没有这样做,请从这里安装 MacPorts:http://www.macports.org/install.php 有一个雪豹的包裹。

从 MacPorts 安装 mysql5-devel:

sudo port install mysql5-server-devel

它将完成所有依赖项,然后是 MySQL。遵循安装程序推荐的所有安装后步骤 - 启动项等。它安装的 MySQL 是 64 位的。

然后安装 MySQL gem:

env ARCHFLAGS="-arch x86_64" gem install mysql -- --with-mysql-config=/opt/local/bin/mysql_config5

注意那里的路径变化。 MacPorts 将 MySQL 放在不同的地方。

你应该很高兴。

【讨论】:

  • 我刚刚尝试了您的解决方案,但遇到了与以前相同的错误。我不确定是否需要尝试重新编译 ruby​​ 1.9.1。
  • 是的,我希望这对你有用,但我认为你的问题是 Ruby 1.9.1。使用默认的雪豹红宝石,它可以工作。 SL 红宝石是 1.8.7。
  • 做了更多调查,发现:github.com/kwatch/mysql-ruby/tree/master
【解决方案3】:

我尝试了上述所有步骤,但没有成功,但发现了使用 mysqlplus gem 而不是 mysql gem 的解决方法(或其他):

sudo env ARCHFLAGS="-arch x86_64" gem install mysqlplus

现在我的 MySQL ruby​​ 应用程序在 Snow Leopard 中运行起来就像一个魅力。

【讨论】:

  • 我得试一试。谢谢。
  • 哦。我的。上帝。如果可以的话,我会为这件事投票 100 次。经过数小时徒劳的谷歌搜索和 mysql、mysql2 和 ruby​​-mysql 的反复失败尝试,您用两句话和一个命令行解决了我的问题。先生,您是我的英雄。如果我们以某种方式见面,我请你喝一杯。
【解决方案4】:

安装 XCode 是我的解决方案

【讨论】:

    【解决方案5】:

    看看这个帖子:http://jameseggers.com/post/185690322/fix-mysql-and-rails-on-snow-leopard。它展示了如何让 MySQL + Ruby on Rails + Snow Leopard 完美运行。

    【讨论】:

      【解决方案6】:

      在网上找到了一个很棒的教程。

      http://www.icoretech.org/2009/08/install-mysql-and-mysql-ruby-gem-on-snow-leopard-64-bit/

      设置PATH 变量是我的问题。

      【讨论】:

        【解决方案7】:

        我在使用 mysql gem、rvm 和 ruby​​ 1.9.1 时遇到了同样的问题。正如我在 NeptunePhoenix 的帖子中提到的,我通过端口安装mysql 取得了成功。

        【讨论】:

          【解决方案8】:

          挣扎了好几个小时才发现这个问题:

          http://markgandolfo.com/2010/08/21/mysql-gem-with-rails-3-and-ruby-1-9-2

          【讨论】:

            【解决方案9】:

            我的解决办法是重新安装 MySQL。我用的是64位DMG安装版——5.5.13 http://dev.mysql.com/downloads/mysql/

            【讨论】:

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