2010-06-28 12 views
15

Intentando iniciar una nueva aplicación Rails 3 beta 4 con mysql .... Ejecutando OS X Snow Leopard. Con las versiones anteriores de Rails no tengo ningún problema con MySQL. Pero ahora cuando comienzo de los rieles 3 aplicación me sale el siguiente error cuando hago clic "sobre su entorno de aplicación" en la pantalla de inicio de los rieles index.html:Rails 3 Mysql Problems

método no definido 'init' para MySQL: Clase

+0

¿tiene 'gema 'mysql'' en su Gemfile? –

+0

Este problema terminó desapareciendo cuando salió el lanzamiento oficial, para mí fue solo un problema cuando estaba usando la versión beta. –

Respuesta

16

Cambie su Gemfile para usar 'mysql2', es un controlador más moderno y tiene características más agradables que otras personas han mencionado.

Las aplicaciones New Rails usan la gema mysql2 de forma predeterminada.

+5

Asegúrate de cambiar también tu archivo database.yml para usar "adapter: mysql2" en lugar de "adapter: mysql", de lo contrario recibirás un error sobre la gema mysql2 que no se está cargando. – nikz

+3

¿También necesito instalar una gema mysql2? Esto se ve de cerca. Recibí el siguiente error: ¡rake abortado! dlopen (/Library/Ruby/Gems/1.8/gems/mysql2-0.3.2/lib/mysql2/mysql2.bundle, 9): Biblioteca no cargada: libmysqlclient.18.dylib Remitido desde:/Library/Ruby/Gems /1.8/gems/mysql2-0.3.2/lib/mysql2/mysql2.bundle Motivo: no se ha encontrado la imagen - /Library/Ruby/Gems/1.8/gems/mysql2-0.3.2/lib/mysql2/mysql2.bundle /Users/chris/rails_projects/sienab/Rakefile: 4 (Vea la secuencia completa al ejecutar la tarea con --trace) – chris

+0

Si necesita declaraciones preparadas, puede usar la gema Sequel, ya que la gema MySql2 aún no la admite. https://github.com/jeremyevans/sequel –

3

I Terminé cambiando de la gema mysql a la gema ruby-mysql, funcionó.

+1

realmente funciona ~~ mysql.gem y mysql2.gem no funciona ... – lkahtz

+1

esto no es realmente una solución, ya que está cambiando el uso de Ruby en lugar de código nativo (algo más lento). Deberías cambiar a la gema mysql2 como sugiere nzkoz. – nikz

1

Creo que he encontrado la solución al problema. En mi caso, el problema era que la gema mysql no se había instalado correctamente utilizando el paquete. cuando hice esto:

paquete instala MySQL (error noobish)

todas las gemas fueron al directorio de MySQL, pero más tarde me han comprobado los documentos de la gema bundler e hicieron esto:

paquete de instalación bundler_files (para saber dónde están las gemas en el futuro)

todo parecía casi correcto, excepto que cuando mysql gem estaba instalándose recibí algunos errores. Me di cuenta de que era por la ruta de mi carpeta "/ home/pawel/Aptana Studio Workspace/myrails_app"

Si tiene espacios en la ruta de la carpeta esta joya no se instalará correctamente y más adelante cuando modifique la ruta a uno sin espacios e intente instalar la gema mysql no lo puedo mostrar cualquier ERRORES, pero se corrompió la instalación, ya que tendrá algunas carpetas adicionales allí con algunos archivos, etc., así

eliminar la carpeta GEM CREADO POR bundler y reinstalar GEMAS CON ESTE MANDO:

paquete de instalación

Eso resolvió el problema.

2

Para el uso simple, que es típico (conectar, consultar, iterar sobre los resultados), encontré la gema mysql2 que es mucho más rápida que las gemas mysql o ruby-mysql y autocaptura los valores a los tipos adecuados. Y se instala perfectamente en Snow Leopard mientras que no pude conseguir que la gema mysql funcione.

Más información en http://github.com/brianmario/mysql2

7

me encontré con el mismo problema (RoR 3, OSX 10.6, MySQL 2.8.1 joya).

Puede utilizar IRB para descartar RoR:

irb 
require 'rubygems' 
require 'mysql' 
db = Mysql.connect('hostname', 'username', 'password', 'database') 

Si lo anterior no funciona, es posible que desee para tratar de eliminar la gema mysql y volver a instalarlo. Me encontré con una publicación diciendo bundle install podría estropear la instalación sin mostrar errores.

sudo gem uninstall mysql 
sudo env ARCHFLAGS="-arch x86_64" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config 

Verificar las cosas funcionan a través de irb, a continuación, poner en marcha los carriles de nuevo.

+0

esto funciona incluso para i386 arch: uname -a Darwin iMac-LZ.local 10.5.0 Darwin Kernel Versión 10.5.0: vie 05 de noviembre 23:20:39 PDT 2010; raíz: xnu-1504.9.17 ~ 1/RELEASE_I386 i386 – Vitalie

+2

Después de hacer esto, aparece el error: 'método no definido 'connect' para Mysql: Class de /Users/sscirrus/.rvm/rubies/ruby-1.9.2-p0/bin/irb:16 : en

'. ¿Cómo arreglar esto? – sscirrus

0

Tengo el mismo problema después de actualizar a Snow Leopard. En la instalación de la gema de MySQL, tengo un montón de errores sobre la documentación, a continuación, en la ejecución del servidor:

undefined method `init' for Mysql:Class 

también estaba teniendo algunos problemas similares, pero sin relación con otras gemas, sobre todo los que tenían componentes C que necesita recopilando como RedCloth y hpricot:

Unable to compile native extensions 

Estos errores fueron que ver con extensiones nativas en la base 64 la arquitectura. La solución fue triple:

  1. He reinstalado XCode 4. La actualización a Snow Leopard había roto mi compilador de C, por lo que algunas gemas no pudieron compilar. Esto me llevó un paso más cerca, pero no solucionó el problema.
  2. Me volé y reinstalé RVM. Parecía estar instalando gemas en un directorio y encontrándolas en otro. Esto corrigió todos los errores de base64 de la arquitectura nativa, pero la gema de MySQL seguía fallando.
  3. Eliminé y degradaba MySQL a la versión 5.1. Esto solucionó el problema de la gema de MySQL.

Todo está ahora bien nuevamente.

1

Creo que lo que sucede es que la gema mysql no puede cargar la biblioteca dinámica mysql (supuestamente proporcionada por la instalación nativa de MySQL). Para probar si esto está sucediendo, hacer esto

$ irb 
1.9.2p320 :001 > require 'mysql_api' 
=> true 
1.9.2p320 :002 > 

Si no es capaz de cargar este bajo nivel mysql_api, (que en realidad proporciona la funcionalidad para la mysql joya), se le dará algunos errores potencialmente útiles. Por lo general, no puede encontrar la biblioteca dinámica. Para remediar esto, me encontré con un par de soluciones:

De http://wonko.com/post/how-to-install-the-mysqlruby-gem-on-mac-os-x-leopard, hago esto

Para todo el sistema de instalación

sudo env ARCHFLAGS="-arch i386" gem install mysql -- \ 
    --with-mysql-dir=/usr/local/mysql --with-mysql-lib=/usr/local/mysql/lib \ 
    --with-mysql-include=/usr/local/mysql/include 

o instalación local

env ARCHFLAGS="-arch i386" gem install mysql -- \ 
    --with-mysql-dir=/usr/local/mysql --with-mysql-lib=/usr/local/mysql/lib \ 
    --with-mysql-include=/usr/local/mysql/include 

y luego desde http://alexbraunstein.com/2011/08/12/library-loaded-libmysqlclient-18-dylib/ poner en .bash_profile:

export DYLD_LIBRARY_PATH=/usr/local/mysql/lib:$DYLD_LIBRARY_PATH