2010-01-24 25 views
6

EDIT: Risolto il problema, grazie a questo post del forum: http://forums.aptana.com/viewtopic.php?f=20&t=7563&p=27407&hilit=libmysql.dll#p27407. Grazie a tutti!Ruby on Rails Rake Error

Ho iniziato a imparare RoR e ho provato a utilizzare rake db:migrate ma continuo a ricevere lo stesso errore. Posso connettermi al database MySQL usando C:\dev\railslist>mysql -u root railslist_development -p. rake db:migrate --trace produce i seguenti:

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' 
... 

Il mio file database.yml è la seguente:

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

    ... 

EDIT: dispiace, mi sono confuso lì ... può connettersi al Database MySQL usando mysql connect localhost - produce un lungo elenco di comandi e variabili. Anche se inserisco mysql -h localhost -u root -p posso accedere al prompt di MySQL. Quindi per chiarire: I può connettersi al database MySQL tramite la riga di comando, tuttavia in RoR Rake genera un errore.

+0

Che cosa contiene il file database.yml? – Mick

risposta

1

Questo è quasi sicuramente perché l'istanza mysql non è in esecuzione o non è stato configurato config/database.yml per essere indirizzato al database corretto per il proprio ambiente (in genere Sviluppo). Qui ci sono un paio di cose da provare -

  • Controlla il tuo config/database.yml - dove è il vostro ospite (se nessun host elencato, si connetterà a localhost)
  • provare a eseguire mysql -h localhost e vedi se mysql è in esecuzione.

EDIT: Se non siete in grado di connettersi al database localhost, allora il problema è lì, non con Rails. Assicurati di averlo in esecuzione e che le tue autorizzazioni siano impostate correttamente per consentire la connessione dal tuo computer. Inoltre, prova a connetterti come root dal tuo computer locale, per vedere se si tratta di un problema più granulare (ad esempio se hai connessioni locali abilitate, ma non per l'utente che stai utilizzando in Rails).

MODIFICA 2: In questo caso, è probabile che il tuo database non sia stato creato. Basta andare a una riga di comando e digitare la seguente:

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

Questo dovrebbe creare il database e consentono di eseguire la migrazione.

+0

Grazie, ho pubblicato il file database.yml, puoi vedere un problema lì? –

+1

Risolto il problema - grazie per il vostro aiuto! –

2

Il DB non è stato creato.

Quando si usa MySql, prima di eseguire rake db:migrate è necessario creare il DB fare:

rake db:create 

oppure creare manualmente il database tramite comandi SQL.

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

Spero che questo ti aiuti.

+0

Hmmm ... chiamando 'rake db: create' restituisce un errore" il database esiste già "(l'avevo fatto prima di usare i comandi SQL) quindi ho cancellato il database e ho provato di nuovo. Successo! Ho controllato con MySQL e il database è stato creato, ma ho ancora lo stesso errore quando chiami 'rake db: migrate'. Ho anche avuto un messaggio di errore strano quando si chiama 'rake db: create': ' C: \ dev \ railslist> rake db: creare (in C:/dev/railslist)

: [BUG] Segmentation fault rubino 1.9.1p243 (revisione 2009-07-16 24175) [i386-mingw32] - frame di controllo ---------- c: 0001 p: 0000 s: 0002 b: 0002 l: 00269c d : 00269c TOP ' –

+0

Pensi che questo sia un bug/problema con Ruby che sto incontrando, o non ho ancora ottenuto qualcosa di corretto? Sembra che Ruby * possa * comunicare con MySQL (ha creato il database, anche se con un errore), ma non riesce su rake db: migrate. –

2

Non sto rispondendo alla tua domanda di per sé, ma dal momento che stai imparando, perché non seguire la sqlite più semplice per ora?

+0

Grazie, ci penserò. –

3

Per chiarire qui - il problema è che la libreria client MySQL non funziona attualmente con Rails 2.3.

Per fissare questo:

  1. Scarica una versione precedente della libreria client here
  2. Goccia questo file nella directory bin rubino
  3. Riavviare il servizio MySQL

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

+0

Ciao, grazie per il tuo aiuto, hai ragione che era il mio problema. Tuttavia, l'ho già risolto, come puoi vedere in cima alla mia domanda. –

+0

Questo ha funzionato per me. Inoltre, assicurati che il tuo database.yml abbia le giuste impostazioni per il tuo localhost. – hohner

+0

Almeno dare crediti o riferimenti a [questo ragazzo] (http://www.continuousgreg.com/blog/?p=41) .. – JMelnik