5

最新の 'my​​sql2' gem と Rails 3.1 で奇妙な問題が発生しています。gem をインクルードすると、IRB から mysql を正常に実行できますが、コンソールでデータベースに保存しようとしたり、ロードしたりするたびに Rails を使用します。サーバーの起動時のページで、[FATAL] Failure to Allocate Memory が表示されます。

使用可能な mysql ログがないようで、Rails が表示する唯一のエラーです。興味深いことに、Rails コンソールで接続を開始し、User.count などのカウント クエリを実行すると、問題なく動作しますが、コンソールを終了しようとすると、無期限にハングします。私がペアを組んでいるすべての人は、同じコードベースとデータベース構造を使用しており、問題はありません...

他の誰かがこの種の問題を抱えていましたか? 昨日、homebrew と mysql をアンインストールして再インストールしようとしましたが、それでも発生します。

4

5 に答える 5

1

mysqlがhomebrewとともにインストールされているOSXLionを使用している場合は、https://stackoverflow.com/a/9555979/1248228で試すことができます。

于 2012-03-10T18:15:01.940 に答える
1

私もこれを手に入れました

[致命的] メモリの割り当てに失敗しました

エラーと修正は、醸造式にあった mysql-connector-c をアンインストールすることでした。

brew uninstall mysql-connector-c
于 2013-04-19T09:19:37.133 に答える
0

私も同じ問題を抱えていました。おそらく悪い習慣ですが、haml ビューに while ループがあり、ループ内でカウンターを初期化し、カウンターをインクリメントするのを忘れていました。

- while (i < 10) do
   = i

カウンターを初期化して増やすと、問題が解決しました。

- i = 0
- while (i < 10) do
  = i
  - i += 1
于 2013-10-16T04:02:42.957 に答える
0

これは、Ruby ではなく、マシンや MySQL の構成に関係している可能性があると思います。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
于 2011-10-02T18:49:57.247 に答える
0

私は 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)

(ホスト:127.0.0.1)config/database.yml経由で接続するように変更することで、この問題を回避できました。localhost

于 2012-01-26T19:23:14.697 に答える