2011-09-07 14 views
5

Ho uno strano problema con l'ultimo gioiello 'mysql2' e Rails 3.1 Posso eseguire mysql bene dall'IRB quando includo la gemma, ma con le guide ogni volta che tento di salvare il database nella console, o anche di caricare la pagina all'avvio del server, ottengo [FATAL] Errore nell'allocazione della memoria.-Fatal- non è riuscito ad allocare memoria - Rails 3.1 e Mysql2 Gem

Sembra che non ci siano registri mysql disponibili, e questo è l'unico errore mostrato da Rails. È interessante notare che quando avvierò una connessione nella console di Rails e semplicemente eseguirò una query di conteggio, ad es. User.count, funziona bene, ma quando provo ad uscire dalla console, lo si blocca a tempo indeterminato. Tutto il ragazzo con cui sto facendo coppia usa lo stesso database e la stessa struttura di database e non ha problemi ...

Qualcun altro ha avuto questo tipo di problema? Ho provato a disinstallare e reinstallare homebrew e mysql ieri e succede ancora.

+0

quale versione rubino (con patchlevel) usi? – Anatoly

+0

Ho lo stesso problema con Rails 3.0.7 e mysql2: http://stackoverflow.com/questions/7490968/cant-get-mysql2-gem-to-work-with-mamp2-and-rvm-on- lion-rails3-app – Mirko

+0

Stai anche utilizzando Lion? – Mirko

risposta

0

Penso che questo potrebbe avere a che fare con la macchina e/o con le configurazioni MySQL piuttosto che con il rubino. Controlla la quantità di memoria che stai permettendo a MySQL di riservare. Questi parametri dovrebbero essere nei file di inizializzazione o di avvio per il database. Sfortunatamente, non so esattamente dove cercare questi file con MySQL.

Ho avuto un errore simile con Postgres una volta perché ho fatto un refuso in un file di configurazione. In Postgres il file che cerchi è simile a questo. Non dovrebbe essere troppo diverso per 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 
0

Ho avuto lo stesso problema su OS X Lion e credo che il problema è stato in qualche modo legato alla installazione di MySQL sul mio sistema e l'adattatore mysql2.

Ho seguito le istruzioni these per installare mysql - che ha installato mysql 5.5.15 sulla mia macchina.

Utilizzando ruby ​​1.9.2 e 3.1.3 rotaie, ho poi ottenuto il seguente errore:

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

sono stato in grado di aggirare questo problema modificando il mio config/database.yml di connettersi tramite il localhost (host: 127.0 .0.1).

1

Ho anche ottenuto questo errore

[FATAL] failed to allocate memory

e la correzione è stata per disinstallare il mysql-connector-c che ho avuto nelle mie formule di fermentazione.

brew uninstall mysql-connector-c 
0

Ho avuto lo stesso problema. Molto probabilmente, una cattiva pratica, ma ho avuto un ciclo while nella mia visualizzazione haml e mi ero dimenticato di inizializzare il contatore e incrementare il contatore all'interno del ciclo.

- while (i < 10) do 
    = i 

inizializzando il contatore e aumentandolo ha risolto il problema.

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