2012-03-31 2 views
7

Also ich bin wirklich neu in Rails, und ich bekomme einen seltsamen Fehler, den ich nicht verstehe. Ich habe ein Event-Modell erstellt und möchte es in meine Datenbank migrieren. Allerdings, wenn ich bundle exec rake db:migrate --trace laufen ist das, was ich bekommen:Rails db: migrate abbrechen ... nicht sicher, warum oder wie es zu beheben

05:55 PM movienights: bundle exec rake db:migrate --trace 
** Invoke db:migrate (first_time) 
** Invoke environment (first_time) 
** Execute environment 
** Invoke db:load_config (first_time) 
** Invoke rails_env (first_time) 
** Execute rails_env 
** Execute db:load_config 
** Execute db:migrate 
== CreateEvents: migrating =================================================== 
-- create_table(:events) 
rake aborted! 
An error has occurred, all later migrations canceled: 

    undefined method `name' for #<ActiveRecord::ConnectionAdapters::TableDefinition:0x007ffa75a27660> 
    Documents/Homework/College/2011-2012/Rails/RailsApps/movienights/db/migrate/20120331213639_create_events.rb:4:in `block in change' 
    .rvm/gems/ruby-1.9.2-p318/gems/activerecord-3.2.2/lib/active_record/connection_adapters/abstract/schema_statements.rb:160:in `create_table' 
    .rvm/gems/ruby-1.9.2-p318/gems/activerecord-3.2.2/lib/active_record/connection_adapters/abstract_mysql_adapter.rb:432:in `create_table' 
    .rvm/gems/ruby-1.9.2-p318/gems/activerecord-3.2.2/lib/active_record/migration.rb:450:in `block in method_missing' 
    .rvm/gems/ruby-1.9.2-p318/gems/activerecord-3.2.2/lib/active_record/migration.rb:424:in `block in say_with_time' 
    .rvm/rubies/ruby-1.9.2-p318/lib/ruby/1.9.1/benchmark.rb:295:in `measure' 
    .rvm/gems/ruby-1.9.2-p318/gems/activerecord-3.2.2/lib/active_record/migration.rb:424:in `say_with_time' 
    .rvm/gems/ruby-1.9.2-p318/gems/activerecord-3.2.2/lib/active_record/migration.rb:444:in `method_missing' 
    Documents/Homework/College/2011-2012/Rails/RailsApps/movienights/db/migrate/20120331213639_create_events.rb:3:in `change' 
    .rvm/gems/ruby-1.9.2-p318/gems/activerecord-3.2.2/lib/active_record/migration.rb:393:in `block (2 levels) in migrate' 
    .rvm/rubies/ruby-1.9.2-p318/lib/ruby/1.9.1/benchmark.rb:295:in `measure' 
    .rvm/gems/ruby-1.9.2-p318/gems/activerecord-3.2.2/lib/active_record/migration.rb:393:in `block in migrate' 
    .rvm/gems/ruby-1.9.2-p318/gems/activerecord-3.2.2/lib/active_record/connection_adapters/abstract/connection_pool.rb:118:in `with_connection' 
    .rvm/gems/ruby-1.9.2-p318/gems/activerecord-3.2.2/lib/active_record/migration.rb:377:in `migrate' 
    .rvm/gems/ruby-1.9.2-p318/gems/activerecord-3.2.2/lib/active_record/migration.rb:512:in `migrate' 
    .rvm/gems/ruby-1.9.2-p318/gems/activerecord-3.2.2/lib/active_record/migration.rb:704:in `block (2 levels) in migrate' 
    .rvm/gems/ruby-1.9.2-p318/gems/activerecord-3.2.2/lib/active_record/migration.rb:761:in `call' 
    .rvm/gems/ruby-1.9.2-p318/gems/activerecord-3.2.2/lib/active_record/migration.rb:761:in `ddl_transaction' 
    .rvm/gems/ruby-1.9.2-p318/gems/activerecord-3.2.2/lib/active_record/migration.rb:703:in `block in migrate' 
    .rvm/gems/ruby-1.9.2-p318/gems/activerecord-3.2.2/lib/active_record/migration.rb:684:in `each' 
    .rvm/gems/ruby-1.9.2-p318/gems/activerecord-3.2.2/lib/active_record/migration.rb:684:in `migrate' 
    .rvm/gems/ruby-1.9.2-p318/gems/activerecord-3.2.2/lib/active_record/migration.rb:554:in `up' 
    .rvm/gems/ruby-1.9.2-p318/gems/activerecord-3.2.2/lib/active_record/migration.rb:535:in `migrate' 
    .rvm/gems/ruby-1.9.2-p318/gems/activerecord-3.2.2/lib/active_record/railties/databases.rake:153:in `block (2 levels) in <top (required)>' 
    .rvm/gems/ruby-1.9.2-p318/gems/rake-0.9.2.2/lib/rake/task.rb:205:in `call' 
    .rvm/gems/ruby-1.9.2-p318/gems/rake-0.9.2.2/lib/rake/task.rb:205:in `block in execute' 
    .rvm/gems/ruby-1.9.2-p318/gems/rake-0.9.2.2/lib/rake/task.rb:200:in `each' 
    .rvm/gems/ruby-1.9.2-p318/gems/rake-0.9.2.2/lib/rake/task.rb:200:in `execute' 
    .rvm/gems/ruby-1.9.2-p318/gems/rake-0.9.2.2/lib/rake/task.rb:158:in `block in invoke_with_call_chain' 
    .rvm/rubies/ruby-1.9.2-p318/lib/ruby/1.9.1/monitor.rb:201:in `mon_synchronize' 
    .rvm/gems/ruby-1.9.2-p318/gems/rake-0.9.2.2/lib/rake/task.rb:151:in `invoke_with_call_chain' 
    .rvm/gems/ruby-1.9.2-p318/gems/rake-0.9.2.2/lib/rake/task.rb:144:in `invoke' 
    .rvm/gems/ruby-1.9.2-p318/gems/rake-0.9.2.2/lib/rake/application.rb:116:in `invoke_task' 
    .rvm/gems/ruby-1.9.2-p318/gems/rake-0.9.2.2/lib/rake/application.rb:94:in `block (2 levels) in top_level' 
    .rvm/gems/ruby-1.9.2-p318/gems/rake-0.9.2.2/lib/rake/application.rb:94:in `each' 
    .rvm/gems/ruby-1.9.2-p318/gems/rake-0.9.2.2/lib/rake/application.rb:94:in `block in top_level' 
    .rvm/gems/ruby-1.9.2-p318/gems/rake-0.9.2.2/lib/rake/application.rb:133:in `standard_exception_handling' 
    .rvm/gems/ruby-1.9.2-p318/gems/rake-0.9.2.2/lib/rake/application.rb:88:in `top_level' 
    .rvm/gems/ruby-1.9.2-p318/gems/rake-0.9.2.2/lib/rake/application.rb:66:in `block in run' 
    .rvm/gems/ruby-1.9.2-p318/gems/rake-0.9.2.2/lib/rake/application.rb:133:in `standard_exception_handling' 
    .rvm/gems/ruby-1.9.2-p318/gems/rake-0.9.2.2/lib/rake/application.rb:63:in `run' 
    .rvm/gems/ruby-1.9.2-p318/gems/rake-0.9.2.2/bin/rake:33:in `<top (required)>' 
    .rvm/gems/ruby-1.9.2-p318/bin/rake:19:in `load' 
    .rvm/gems/ruby-1.9.2-p318/bin/rake:19:in `<main>' 
    Tasks: TOP => db:migrate 

Als ich bundle exec rake laufen, erhalte ich:

You have 1 pending migrations: 
    20120331213639 CreateEvents 
Run `rake db:migrate` to update your database then try again. 

Meine Veranstaltungen Migration erstellen ist:

class CreateEvents < ActiveRecord::Migration 
    def change 
    create_table :events do |t| 
     t.name :string 
     t.date :datetime 
     t.location :string 

     t.timestamps 
    end 
    end 
end 

Aber ich löschte das Ereignismodell mit rails destroy scaffold Event und machte es wieder mit anderen Eigenschaften. Könnte das ein Teil des Problems sein?

Jede Hilfe oder Vorschläge werden sehr geschätzt!

+0

können wir die Migrationsereignisse erstellen sehen? – Spyros

Antwort

13

Falsche Reihenfolge beim Deklarieren von Attributen in der Migration. Es sollte sein:

t.string :name 

Das gleiche für Ihre anderen Attribute. Benennen Sie das Datumsattribut auch in etwas anderes um, da es sich um einen beibehaltenen Schlüsselnamen handelt, den Sie niemals verwenden sollten.

Es scheint, dass Sie wahrscheinlich den Generator wie laufen ‚string: name‘ anstelle des richtigen ‚name: string‘ :)

+0

Bahaha gut das ist ein bisschen peinlich. Vielen Dank! – Mason

1

ich den gleichen Fehler hatte, weil ich Großbuchstaben minimal statt verwendet. String statt String.

1

Ich hatte den gleichen Fehler. Ich dachte beim Schreiben der Migration, dass ich "bool" anstelle von boolean verwenden könnte. Das ist nicht der Fall. Als ich die rails g model model_name is_verified:bool Schienen benutzte, habe ich mich nicht über das Setup beschweren. Aber als ich die Migration gemacht habe, hat es diesen Fehler ausgelöst. Ich änderte es gerade in der Migrationsdatei zu t.boolean und es funktionierte ohne Problem.

Verwandte Themen