2010-01-24 36 views
6

EDITAR: Resolvió el problema, gracias a esta publicación en el foro: http://forums.aptana.com/viewtopic.php?f=20&t=7563&p=27407&hilit=libmysql.dll#p27407. ¡Gracias a todos!Ruby on Rails Rake Error

Empecé a aprender RoR y he estado tratando de usar rake db:migrate pero sigo recibiendo el mismo error. Puedo conectarme a la base de datos MySQL usando C:\dev\railslist>mysql -u root railslist_development -p. rake db:migrate --trace produce lo siguiente:

C:\dev\railslist>rake db:migrate --trace 
(in C:/dev/railslist) 
** Invoke db:migrate (first_time) 
** Invoke environment (first_time) 
** Execute environment 
** Execute db:migrate 
rake aborted! 
Mysql::Error: query: not connected: CREATE TABLE 'schema_migrations' ('version' 
varchar(255) NOT NULL) ENGINE=InnoDB 
C:/Ruby19/lib/ruby/gems/1.9.1/gems/activerecord-2.3.5/lib/active_record/connecti 
on_adapters/abstract_adapter.rb:219:in 'rescue in log' 
C:/Ruby19/lib/ruby/gems/1.9.1/gems/activerecord-2.3.5/lib/active_record/connecti 
on_adapters/abstract_adapter.rb:202:in 'log' 
C:/Ruby19/lib/ruby/gems/1.9.1/gems/activerecord-2.3.5/lib/active_record/connecti 
on_adapters/mysql_adapter.rb:323:in 'execute' 
C:/Ruby19/lib/ruby/gems/1.9.1/gems/activerecord-2.3.5/lib/active_record/connecti 
on_adapters/abstract/schema_statements.rb:114:in 'create_table' 
... 

Mi archivo database.yml es el siguiente:

development: 
    adapter: mysql 
    database: railslist_development 
    username: root 
    password: ********** 
    host: localhost 

    ... 

EDIT: Lo siento, me metí allí ... puede conectarse a la Base de datos MySQL usando mysql connect localhost - produce una larga lista de comandos y variables. Además, si ingreso mysql -h localhost -u root -p, puedo iniciar sesión en el indicador de MySQL. Así que para aclarar: I puede conectarse a la base de datos MySQL a través de la línea de comandos, sin embargo, en RoR Rake produce un error.

+0

¿Qué contiene tu archivo database.yml? – Mick

Respuesta

1

Esto es casi definitivamente debido a que su instancia de mysql no se está ejecutando o no ha configurado config/database.yml para apuntar a la base de datos correcta para su entorno (generalmente Desarrollo). Aquí hay un par de cosas para tratar -

  • Compruebe su configuración/database.yml - donde es su anfitrión (si no hay anfitrión en la lista, que va a conectarse al servidor local)
  • intente ejecutar mysql -h localhost y ver si mysql se está ejecutando.

EDIT: Si usted no es capaz de conectarse a la base de datos localhost, entonces el problema está ahí, no con rieles. Asegúrese de que esté ejecutándose y de que sus permisos estén configurados correctamente para permitir la conexión desde su máquina. Además, intente conectarse como root desde su equipo local, para ver si se trata de un problema más granular (como que tiene conexiones locales habilitadas, pero no para el usuario que está utilizando en Rails).

EDIT 2: En este caso, es probable que su problema sea que su base de datos no se ha creado. Sólo tienes que ir a una línea de comandos y escriba lo siguiente:

mysql -u root -p -e 'create database railslist_development;'

Esto debe crear la base de datos y permite llevar a cabo la migración.

+0

Gracias, he publicado el archivo database.yml, ¿puedes ver un problema allí? –

+1

Resolvió el problema, ¡gracias por su ayuda! –

2

La base de datos no se ha creado.

Al utilizar MySQL, antes de ejecutar rake db:migrate debe crear la base de datos haciendo:

rake db:create 

O crear la base de datos de forma manual a través de comandos SQL.

 
mysql -h localhost -u root -p 
> CREATE DATABASE railslist_development; 

Espero que esto te ayude.

+0

Hmmm ... al llamar 'rake db: create' devuelve un error de" base de datos existente "(lo había hecho antes de usar comandos SQL) así que eliminé la base de datos y volví a intentarlo. ¡Éxito! Comprobé con MySQL y se creó la base de datos, pero sigo recibiendo el mismo error cuando llamo 'rake db: migrate'. También me dio un mensaje de error cuando se llama 'extraña rake db: create': ' C: \ dev \ railslist> rake db: crear (en C:/dev/railslist)

: [ERROR] Segmentación culpa rubí 1.9.1p243 (2009-07-16 revisión 24175) [i386-mingw32] - marco de control ---------- c: 0001 p: 0000 s: 0002 b: 0002 l: 00269c d : 00269c TOP ' –

+0

¿Crees que se trata de un error/problema con Ruby que encuentro, o todavía no tengo algo configurado, verdad? Parece que Ruby * puede * comunicarse con MySQL (creó la base de datos, aunque con un error), pero falla en rake db: migrate. –

2

No estoy respondiendo su pregunta per se, pero como recién está aprendiendo, ¿por qué no ceñirse a la sqlite más simple por ahora?

+0

Gracias, lo pensaré. –

3

Para aclarar aquí, el problema es que la biblioteca MySQL del cliente no funciona actualmente con Rails 2.3.

Para solucionar este:

  1. Descargar una versión anterior de la biblioteca cliente here
  2. gota este archivo en el directorio bin rubí
  3. Reinicie el servicio MySQL

    [1]: [1]: http://instantrails.rubyforge.org/svn/trunk/InstantRails-win/InstantRails/mysql/bin/libmySQL.dll "aquí"

+0

Hola, gracias por tu ayuda, tienes razón, ese era mi problema. Sin embargo, ya lo he resuelto, como puede ver en la parte superior de mi pregunta. –

+0

Esto funcionó para mí. Además, asegúrese de que su database.yml tenga la configuración correcta para su servidor local. – hohner

+0

Al menos da créditos o referencias a [este tipo] (http://www.continuousgreg.com/blog/?p=41) .. – JMelnik