2011-09-07 12 views
5

Tengo un problema extraño con la última joya 'mysql2' y Rails 3.1 Puedo ejecutar mysql bien desde el IRB cuando incluyo la gema, pero con rieles cada vez que intento guardar en la base de datos de la consola, o incluso cargar la página cuando se inicia el servidor, recibo [FATAL] Error al asignar memoria.-Fatal- no se pudo asignar la memoria - Rails 3.1 y Mysql2 Gem

Parece que no hay registros de mysql disponibles, y ese es el único error que muestra Rails. Curiosamente, cuando inicio una conexión en la consola de Rails y solo ejecuto una consulta de recuento, p. User.count, funciona bien, pero cuando intento salir de la consola, cuelga indefinidamente. Todo el tipo con el que me estoy emparejando usa la misma base de código y estructura de base de datos y no tiene problemas ...

¿Alguien más tenía este tipo de problema? Intenté desinstalar y volver a instalar homebrew y mysql ayer y todavía sucede.

+0

¿qué versión de rubí (con parche) utiliza? – Anatoly

+0

Tengo el mismo problema con Rails 3.0.7 y mysql2: http://stackoverflow.com/questions/7490968/cant-get-mysql2-gem-to-work-with-mamp2-and-rvm-on- lion-rails3-app – Mirko

+0

¿También estás usando Lion? – Mirko

Respuesta

0

Creo que esto podría tener que ver con la máquina y/o las configuraciones de MySQL en lugar de ruby. Compruebe la cantidad de memoria que permite que MySQL reserve. Estos parámetros deben estar en los archivos de inicialización o inicio de la base de datos. Desafortunadamente, no sé exactamente dónde buscar estos archivos con MySQL.

Tuve un error similar con Postgres una vez porque hice un error tipográfico en un archivo de configuración. En Postgres, el archivo que está buscando se ve así. No debe ser demasiado diferentes para 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

que tenían el mismo problema en OS X Lion y creo que el problema era de alguna manera relacionada con la instalación de MySQL en mi sistema y el adaptador mysql2.

Seguí these instrucciones para instalar mysql - que instaló mysql 5.5.15 en mi máquina.

El uso de rubí 1.9.2 y 3.1.3 rieles, entonces me dieron el siguiente error:

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

yo era capaz de solucionar este problema cambiando mi config/database.yml para conectarse a través de la localhost (host: 127,0 .0.1).

1

también conseguí este error

[FATAL] failed to allocate memory

y la solución era para desinstalar el mysql-connector-c que tenía en mis fórmulas de preparación.

brew uninstall mysql-connector-c 
0

Tuve el mismo problema. Probablemente, una mala práctica pero tuve un ciclo while en mi vista de haml y olvidé inicializar el contador e incrementar el ciclo interno del contador.

- while (i < 10) do 
    = i 

al inicializar el contador y aumentarlo solucionó el problema.

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