-Fatal-无法分配内存 – Rails 3.1和Mysql2 Gem

我遇到了一个奇怪的问题,最新的’mysql2’gem和Rails 3.1当我包含gem时我可以从IRB运行mysql,但是每当我试图在控制台中保存到数据库时,我都可以运行rails,甚至加载服务器启动时的页面,我得[致命]无法分配内存

似乎没有任何可用的mysql日志,这是Rails显示的唯一错误。 有趣的是,当我在Rails控制台中启动连接并运行计数查询(例如User.count)时,它工作正常,但是当我尝试退出控制台时,它会无限期挂起 。 我正在配对的所有人都使用相同的代码库和数据库结构并且没有问题……

其他人有这种问题吗? 我昨天尝试卸载并重新安装自制程序和mysql,但它仍然会发生。

如果您使用自制的mysql安装了OS X Lion,可以尝试使用https://stackoverflow.com/a/9555979/1248228

我也得到了这个

[致命]无法分配内存

错误,修复是卸载我在brew公式中的mysql-connector-c。

brew uninstall mysql-connector-c 

我认为这可能与你的机器和/或MySQL配置而不是ruby有关。 检查允许MySQL保留多少内存。 这些参数应该在数据库的初始化或启动文件中。 不幸的是,我不确切知道在哪里用MySQL查找这些文件。

我曾经和Postgres有过类似的错误,因为我在配置文件中输入了一个拼写错误。 在Postgres中,您要查找的文件如下所示。 它不应该与MySQL太不相同:

 #------------------------------------------------------------------------------ # RESOURCE USAGE (except WAL) #------------------------------------------------------------------------------ # - Memory - !!!THIS is the field you want to change!!! shared_buffers = 28MB # min 128kB, default 28 # (change requires restart) #temp_buffers = 8MB # min 800kB #max_prepared_transactions = 0 # zero disables the feature # (change requires restart) # Note: Increasing max_prepared_transactions costs ~600 bytes of shared memory # per transaction slot, plus lock space (see max_locks_per_transaction). # It is not advisable to set max_prepared_transactions nonzero unless you # actively intend to use prepared transactions. #work_mem = 1MB # min 64kB #maintenance_work_mem = 16MB # min 1MB #max_stack_depth = 2MB # min 100kB 

我在OS X Lion上遇到了同样的问题,我认为这个问题与我的系统和mysql2适配器上的mysql安装有某种关系。

我按照这些说明安装了mysql – 它在我的机器上安装了mysql 5.5.15。

使用ruby 1.9.2和rails 3.1.3,我得到以下错误:

 mysql2/client.rb:44:in `connect': Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) (Mysql2::Error) 

通过更改我的config/database.yml以通过localhost (主机:127.0.0.1)进行连接,我能够解决这个问题。

我有同样的问题。 很可能是一个不好的做法,但我在haml视图中有一个while循环,我忘记初始化计数器并在循环内增加计数器。

 - while (i < 10) do = i 

初始化计数器并增加它解决了问题。

 - i = 0 - while (i < 10) do = i - i += 1