Seite 1 von 1

Schon wieder ein Migrationsproblem

BeitragVerfasst: 24.07.2008, 08:33
von Theoric
Hallo,

nachdem ich gestern bereits Probleme beim Migrieren hatte kommt es heute schon wieder.
Als das
Code: Alles auswählen
rake migrate
gestern funktioniert hatte, machte ich daraufhin mittels
Code: Alles auswählen
ruby script/generate controller scaffold project project

einen Controller und danach erstellte ich eine Iteration mit
Code: Alles auswählen
ruby script/generate model iteration

wodurch eine neue Migrationsdatei erstellt wurde. Diese Migrationsdatei bearbeitete ich im Nachhinein und wollte mein Projekt wieder auf den neuen Stand migrieren.

Hier erst einmal die Migrationsdatei:

Code: Alles auswählen
class CreateIterations < ActiveRecord::Migration
  def self.up
    create_table :iterations do |t|
      t.column :name, :string, :limit => 100,
               :null => false, :default => ""
      t.column :description, :text, :null => false, :default => ""
      t.column :start_date, :date, :null => false
      t.column :end_date, :date, :null => false
      t.column :project_id, :integer, :null => false
    end
  end

  def self.down
    drop_table :iterations
  end
end


Und hier nun die Fehlermeldung:

Code: Alles auswählen
abogo@abogo-desktop:~/ontrack$ rake migrate --trace
(in /home/abogo/ontrack)
rake aborted!
Don't know how to build task 'migrate'
/usr/lib/ruby/1.8/rake.rb:1634:in `[]'
/usr/lib/ruby/1.8/rake.rb:1930:in `invoke_task'
/usr/lib/ruby/1.8/rake.rb:1909:in `top_level'
/usr/lib/ruby/1.8/rake.rb:1909:in `each'
/usr/lib/ruby/1.8/rake.rb:1909:in `top_level'
/usr/lib/ruby/1.8/rake.rb:1948:in `standard_exception_handling'
/usr/lib/ruby/1.8/rake.rb:1903:in `top_level'
/usr/lib/ruby/1.8/rake.rb:1881:in `run'
/usr/lib/ruby/1.8/rake.rb:1948:in `standard_exception_handling'
/usr/lib/ruby/1.8/rake.rb:1878:in `run'
/usr/bin/rake:28


Danke im Vorazs!

Re: Schon wieder ein Migrationsproblem

BeitragVerfasst: 24.07.2008, 09:03
von megawatt
Hallo,

ist wohl die Zeile
Code: Alles auswählen
t.column :description, :text, :null => false, :default => ""


Eine Spalte vom Typ "Text" kann i.d.R. keinen Default-Wert haben.
Ich würde also :default=>"" einfach löschen.

Re: Schon wieder ein Migrationsproblem

BeitragVerfasst: 24.07.2008, 09:12
von Theoric
Hab ich gemacht, nur geht es jetzt immer noch nicht...

Code: Alles auswählen
abogo@abogo-desktop:~/ontrack$ rake migrate --trace
(in /home/abogo/ontrack)
rake aborted!
Don't know how to build task 'migrate'
/usr/lib/ruby/1.8/rake.rb:1634:in `[]'
/usr/lib/ruby/1.8/rake.rb:1930:in `invoke_task'
/usr/lib/ruby/1.8/rake.rb:1909:in `top_level'
/usr/lib/ruby/1.8/rake.rb:1909:in `each'
/usr/lib/ruby/1.8/rake.rb:1909:in `top_level'
/usr/lib/ruby/1.8/rake.rb:1948:in `standard_exception_handling'
/usr/lib/ruby/1.8/rake.rb:1903:in `top_level'
/usr/lib/ruby/1.8/rake.rb:1881:in `run'
/usr/lib/ruby/1.8/rake.rb:1948:in `standard_exception_handling'
/usr/lib/ruby/1.8/rake.rb:1878:in `run'
/usr/bin/rake:28

Re: Schon wieder ein Migrationsproblem

BeitragVerfasst: 24.07.2008, 09:25
von megawatt
Dann liegt das Problem möglicherweise woanders. Passt die ID in der Tabelle "schema" denn auch mit der aktuellen Migration zusammen?

Re: Schon wieder ein Migrationsproblem

BeitragVerfasst: 24.07.2008, 09:32
von Theoric
Öhm, wie ich gestern schon schrieb, bin noch ziemlich neu in der Hinsicht, ich hab mir die schema.rb mal angeschaut, ich poste sie hier mal:

Code: Alles auswählen
ActiveRecord::Schema.define(:version => 1) do

  create_table "projects", :force => true do |t|
    t.string "name",        :limit => 100, :default => "", :null => false
    t.text   "description",                                :null => false
    t.date   "start_date",                                 :null => false
  end

end


Frage am Rande, muss ich in der schema.rb alle Einträge die ich auch in der 2. Migrationsdatei(bzw. in den darauffolgenden) gemacht habe dort erneut eintragen? Was muss ich da jetzt reinschreiben? Beim ersten Migrationsversuch wurde die Tabelle ja auch erstellt...oder hab ich da nen Denkfehler....

Re: Schon wieder ein Migrationsproblem

BeitragVerfasst: 24.07.2008, 11:07
von megawatt
Nein, nix da reinschreiben :)

Es gibt eine von Rails angelegte Tabelle, die schema_migrations heisst. Der höchste Wert, der dort hinterlegt ist, muss mit der aktuellen Migration-Stufe zusammenpassen. Andernfalls (wenn möglich) solltest du einfach nochmal alle Tabellen löschen (inklusive schema_migrations) und die Migration von Grund auf neu durxchführen.

Re: Schon wieder ein Migrationsproblem

BeitragVerfasst: 24.07.2008, 11:18
von Theoric
..und wo finde ich die Tabelle schema_migrations? Im Projektordner findet sich außer der schema.rb nichts vergleichbares....

Re: Schon wieder ein Migrationsproblem

BeitragVerfasst: 24.07.2008, 11:39
von megawatt
Du braucht einen DB-Browser-Programm, wie phpMyAdmin oder (für die lokale Entwicklungsumgebung) einfach den MySQL-Administrator. Den gibts unter http://dev.mysql.com/downloads/gui-tools/5.0.html. Dort kannst du dann direkten DB-Zugriff und kannst Tabellem löschen.

Re: Schon wieder ein Migrationsproblem

BeitragVerfasst: 24.07.2008, 12:00
von Theoric
hab mir die Tabellen mal mit dem Query-Browser angeschaut...aber da ist keine Tabelle mit dem Namen schema_migration, nur eine schema_info mit nur dem feld version drin....

Re: Schon wieder ein Migrationsproblem

BeitragVerfasst: 24.07.2008, 12:08
von megawatt
hört sich nach einer älteren Rails-Version an. Wenn möglich, würde ich updaten.
Die Codestruktur der Migration-Datei ist bei neueren Versionen ebenfalls etwas anders.
Aber egal: Du kannst die migration_info löschen (sowie alle anderen Tabellen) und anschliessend nochmal den Migration-Prozess starten.

Re: Schon wieder ein Migrationsproblem

BeitragVerfasst: 20.02.2009, 16:57
von McSvenster
sry, dass ich mich einmische, aber sollte es nicht rake db:migrate heissen? Versuch's doch mal damit.

Gruß
Mc

lol, ich sehe gerade das Alter der Diskussion...