我对最新的'mysql2' gem和Rails 3.1有一个奇怪的问题,当我包括gem时,我可以从IRB运行mysql,但是每当我试图在控制台保存到数据库时,甚至在服务器启动时加载页面时,我都会得到[致命]分配内存失败。
似乎没有任何mysql日志可用,这是Rails显示的唯一错误。有趣的是,当我在Rails控制台中启动连接并运行计数查询时,例如User。计数,它工作得很好,但是当我试图退出控制台时,它无限期地挂起。所有的家伙我配对是使用相同的代码库和数据库结构,并得到没有问题…
还有人有这样的问题吗?我尝试卸载和重新安装自制和mysql昨天,它仍然发生。
如果你在OS X Lion上安装了mysql,你可以试试https://stackoverflow.com/a/9555979/1248228
我也得到了这个
[FATAL]分配内存失败
错误,修复方法是卸载我的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上遇到了同样的问题,我相信这个问题与我的系统上的mysql安装和mysql2适配器有关。
我按照下面的说明安装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