【问题标题】:Can't get mysql2 gem to work with MAMP2 and RVM on Lion, Rails3 app无法让 mysql2 gem 在 Lion、Rails3 应用程序上与 MAMP2 和 RVM 一起使用
【发布时间】:2011-09-20 19:51:23
【问题描述】:

我在 OS X Lion 上使用 MAMP2、rvm,我无法让 mysql2 gem 与我的 Rails 应用程序一起使用。

我已经关注了这篇博文 http://blog.mirotin.net/35/mamp-1-9-5-mysql-5-5-9-and-ruby-mysql2 和这篇博文 http://www.pa-ket.com/blog/show/12-osx-ruby-mysql2-gem-python-mysqldb-using-mamp

这些是步骤:

$ cd /tmp
$ mv /Users/yourname/Desktop/mysql-5.5.9.tar.gz .
$ tar xf mysql-5.5.9.tar.gz
$ cd mysql-5.5.9
$ brew install cmake
$ cmake . -DMYSQL_UNIX_ADDR=/Applications/MAMP/tmp/mysql/mysql.sock -DCMAKE_INSTALL_PREFIX=/Applications/MAMP/Library

此步骤失败:

$ make -j 3

在 /tmp/mysql-5.5.9/CMakeFiles/Makefile2 'make -j 3' 中对 'my_atomic-t.dir' 的单元测试进行评论后,一切正常。

$ cp libmysql/*.dylib /Applications/MAMP/Library/lib/
$ mkdir -p /Applications/MAMP/Library/include/mysql
$ cp include/* /Applications/MAMP/Library/include/mysql
$ env ARCHFLAGS="-arch x86_64" gem install mysql2 -v 0.2.11 -- --with-mysql-config=/Applications/MAMP/Library/bin/mysql_config
Building native extensions.  This could take a while...
Successfully installed mysql2-0.2.11
1 gem installed
Installing ri documentation for mysql2-0.2.11...
Enclosing class/module 'mMysql2' for class Client not known
Installing RDoc documentation for mysql2-0.2.11...
Enclosing class/module 'mMysql2' for class Client not known

我猜“客户未知”警告并不重要。
最后一步:

install_name_tool -change /tmp/mysql-5.5.9/libmysql/libmysqlclient.16.dylib /Applications/MAMP/Library/lib/libmysqlclient.16.dylib ~/.rvm/gems/ruby-1.9.2-p290@global/gems/mysql2-0.2.11/ext/mysql2/mysql2.bundle

我在启动 rails server 时遇到的错误:

$ rails server
=> Booting WEBrick
=> Rails 3.0.7 application starting in development on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
[FATAL] failed to allocate memory

我只是无法设置那个 mysql2 gem,我已经尝试了好几个星期。在尝试安装 mysql2 gem 出现无数错误之后,这就是我完全卡住的地方。

我在带有 MAMP 2.0.3 和 Rails 3.0.7 的 OS X Lion 上使用 RVM 和 ruby​​-1.9.2-p290。

非常感谢任何帮助!

【问题讨论】:

  • 我只是在 SnowLeopard 机器上重复了所有步骤,包括“make -j 3”,一切正常。所以这一定是狮子的问题。
  • Mirko,你解决了吗?
  • 我发布了一个类似问题的答案here。它可能会有所帮助。
  • Mirko,你解决了吗?我也有类似的问题...

标签: ruby-on-rails rvm osx-lion mamp mysql2


【解决方案1】:

我解决了这个问题,卸载 mysql-connector-c 并使用 brewed mysql 服务器的 include 和 lib 标志重新编译 mysql2 gem。

$ brew uninstall mysql-connector-c
$ gem uninstall mysql2
$ gem install mysql2 -- --with-mysql-include=/usr/local/Cellar/mysql/5.5.19/include --with-mysql-lib=/usr/local/Cellar/mysql/5.5.19/lib

http://abisso.org/2012/03/failed-to-allocate-memory/

【讨论】:

  • 感谢分享。我没有使用 brew 安装 MySQL,但它仍然适用于我。
【解决方案2】:

您不应为此使用 MAMP。

我读到了你想要做的事情。你的问题不是 mysql2 gem。你的问题是你安装了mysql。

按照这篇展示使用自制软件安装 mysql 的文章。它非常简单,大约需要 10-15 分钟,包括安装时间。

http://blog.theablefew.com/very-simple-homebrew-mysql-and-rails

使用 brew 安装 mysql 的附注。安装mysql成功后会吐出一大堆信息,你需要仔细看一下,因为在所有其他垃圾中有1-2行是指令,粘贴一些东西等等......

我的设置:

目前在我的设置中,我有 MAMP(用于我的 /sites 目录),当我做一些简单的事情时,比如 wordpress 网站等......然后我有我的自制安装 mysql for rails(最终我切换到 sqlite/pg for heroku) .是的,我可以同时运行它们。我有这个设置是因为我的项目需要我在 rails 应用程序、静态 html 登录页面和一些较旧的 php 项目之间来回切换,而且我喜欢安装 2 个 mysql 的分离。

【讨论】:

  • 感谢您的回答。我在 Leopard 和 Snow Leopard 上都只拥有 MAMP 的 mysql,我真的很想对 Lion 也一样。我目前正在使用 ruby​​-mysql gem,但是当我有时间时,我会尝试将 MAMP 降级到 1.x,正如那些博客文章所显示的那样。我最后的手段将是另一个带有自制软件的 mysql 实例......
  • 我会的,我查看了您帖子中的那个链接,您在过去的一个月里遇到了这个问题。这其中的乐趣在哪里?是时候写一些很棒的代码了!!我讨厌服务器管理的东西,而不是我的包。如果您对此感到担心,我也根本没有任何性能问题。另外,过了一段时间我刚刚切换到 sqlite,我认为没有理由坚持使用 mysql,特别是如果它已经在您的系统上造成了如此多的麻烦。
  • 我必须在生产中使用mysql,所以我别无选择。你在 dev 中使用 sqlite 在生产中使用 mysql 吗?可行吗?
  • 是的,这就是 ORM 的魅力所在。您可以在 DB 之间切换,只需将 gem 放入您想要的 db 的 gemfile 中,然后为开发/生产设置组。我使用 Sqlite 进行开发,PG 进行生产,如果我想使用 mysql 我也可以。
【解决方案3】:

尝试将其添加到您的 Gemfile:

gem 'mysql2', < '0.3'

不久前我发了一篇关于类似问题的帖子。你可以在这里查看答案:

Cannot run migrations due to MySQL error

【讨论】:

  • 来吧,你不会真的认为我没有将它添加到我的 Gemfile 中。我尝试了所有 0.2.xx mysql2 gems...
猜你喜欢
  • 1970-01-01
  • 2012-11-18
  • 1970-01-01
  • 2015-05-09
  • 1970-01-01
  • 2012-02-28
  • 1970-01-01
  • 1970-01-01
  • 2012-07-02
相关资源
最近更新 更多