2010-01-24 3 views
6

EDIT: Gelöst das Problem, dank dieser Forumsbeitrag: http://forums.aptana.com/viewtopic.php?f=20&t=7563&p=27407&hilit=libmysql.dll#p27407. Danke allen!Ruby on Rails Rake Fehler

Ich habe begonnen, RoR zu lernen und habe versucht, rake db:migrate zu verwenden, aber ich bekomme immer den gleichen Fehler. Ich kann eine Verbindung zur MySQL-Datenbank mit C:\dev\railslist>mysql -u root railslist_development -p herstellen. rake db:migrate --trace erzeugt folgendes:

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

Meine database.yml Datei ist wie folgt:

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

    ... 

EDIT: Sorry, ich dort gemischt habe ... ich kann auf die Verbindung MySQL-Datenbank mit mysql connect localhost - es erzeugt eine lange Liste von Befehlen und Variablen. Auch wenn ich mysql -h localhost -u root -p gebe, kann ich mich in die MySQL-Eingabeaufforderung einloggen. So zu klären: I kann Verbindung mit der MySQL-Datenbank über die Befehlszeile, aber in RoR erzeugt Rake einen Fehler.

+0

Was enthält Ihre Datei "database.yml"? – Mick

Antwort

1

Dies ist fast definitiv, weil Ihre mysql-Instanz nicht ausgeführt wird oder Sie config/database.yml nicht konfiguriert haben, um auf die richtige Datenbank für Ihre Umgebung (normalerweise Entwicklung) zu zeigen. Hier sind ein paar Dinge zu versuchen -

  • Überprüfen Sie Ihre config/database.yml - wo Ihr Gastgeber ist (wenn kein Host aufgeführt, wird es auf localhost verbinden)
  • Versuchen Sie, mysql -h localhost und sehen, ob mysql läuft.

EDIT: Wenn Sie nicht in der Lage sind, zu Ihrer lokalen Host-Datenbank zu verbinden, dann ist das Problem dort ist, nicht mit Rails. Stellen Sie sicher, dass sie ausgeführt wird und dass Ihre Berechtigungen korrekt sind, um eine Verbindung von Ihrem Computer zu ermöglichen. Versuchen Sie auch, als Root von Ihrem lokalen Computer aus eine Verbindung herzustellen, um festzustellen, ob es sich um ein genaueres Problem handelt (z. B. wenn lokale Verbindungen aktiviert sind, nicht jedoch für den Benutzer, den Sie in Rails verwenden).

EDIT 2: In diesem Fall ist Ihr Problem wahrscheinlich, dass Ihre Datenbank nicht erstellt wurde. Gehen Sie einfach auf eine Befehlszeile und geben Sie die folgende:

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

Dies sollte die Datenbank erstellen und lassen Sie Ihre Migration laufen.

+0

Danke, ich habe die Datenbank.yml-Datei veröffentlicht, können Sie ein Problem dort sehen? –

+1

Das Problem wurde gelöst - danke für Ihre Hilfe! –

2

Der DB ist nicht angelegt.

Wenn MySql verwenden, bevor rake db:migrate Laufen Sie den DB tun erstellen sollten:

die Datenbank manuell über SQL-Befehle
rake db:create 

Oder erstellen.

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

Ich hoffe, das hilft Ihnen.

+0

Hmmm ... Aufruf 'Rake db: create' gibt einen Fehler" Datenbank bereits existiert "(ich hatte es vor der Verwendung von SQL-Befehlen gemacht), so löschte ich die Datenbank und versuchte es erneut. Erfolg! Ich überprüfte mit MySQL und die Datenbank wird erstellt - aber ich bekomme immer noch den gleichen Fehler beim Aufruf von 'rake db: migrate'. Ich habe auch eine seltsame Fehlermeldung beim Aufruf 'rake db: create': ' C: \ dev \ railslist> rake db: create (in C:/dev/railslist)

: [BUG] Segmentation fault Rubin 1.9.1p243 (2009-07-16 Revision 24175) [i386-mingw32] - Kontrollrahmen ---------- c: 0001 p: 0000 s: 0002 b: 0002 l: 00269c d : 00269c TOP ' –

+0

Glaubst du, das ist ein Fehler/Problem mit Ruby, dem ich begegne, oder habe ich immer noch nichts richtig eingerichtet? Es scheint Ruby * kann * mit MySQL kommunizieren (es erstellt die Datenbank, obwohl mit einem Fehler), scheitert aber an Rake db: migrieren. –

2

Ich beantworte deine Frage nicht per se, aber da du gerade lernst, warum bleibst du jetzt nicht beim einfacheren sqlite?

+0

Danke, ich denke darüber nach. –

3

Um hier zu klären - das Problem ist, dass die Client-MySQL-Bibliothek derzeit nicht mit Rails 2.3 funktioniert.

dies zu beheben:

  1. Laden Sie eine ältere Version der Client-Bibliothek here
  2. Tropfen diese Datei in Ihrem Ruby-bin-Verzeichnis
  3. Starten Sie den MySQL-Dienst

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

+0

Hallo, danke für deine Hilfe, du hast Recht, das war mein Problem. Allerdings habe ich es bereits gelöst, wie Sie oben in meiner Frage sehen können. –

+0

Das hat bei mir funktioniert. Stellen Sie außerdem sicher, dass Ihre Datenbank.yml über die richtigen Einstellungen für Ihren lokalen Host verfügt. – hohner

+0

Zumindest Credits oder Verweis auf [dieser Typ] (http://www.continuousgreg.com/blog/?p=41) .. – JMelnik