2012-03-31 8 views
7

तो मैं रेल के लिए वास्तव में नया हूं, और मुझे एक अजीब त्रुटि मिल रही है जिसे मैं समझ नहीं पा रहा हूं। मैंने एक इवेंट मॉडल बनाया और मैं इसे अपने डेटाबेस में माइग्रेट करना चाहता हूं।रेल डीबी: निरस्त करना माइग्रेट करें ... सुनिश्चित नहीं है कि इसे क्यों ठीक किया जाए या कैसे

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 

जब मैं bundle exec rake चलाने के लिए, मैं:

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

मेरी बनाएं घटनाओं प्रवास है:

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 

हालांकि, मैं हालांकि, जब मैं bundle exec rake db:migrate --trace चलाने इस मैं क्या मिलता है rails destroy scaffold Event का उपयोग करके इवेंट मॉडल को हटा दिया और इसे फिर से अलग-अलग गुणों के साथ बनाया। क्या यह समस्या का हिस्सा हो सकता है?

कोई भी मदद या सुझावों की बहुत सराहना की जाती है!

+0

क्या हम ईवेंट इवेंट माइग्रेशन देख सकते हैं? – Spyros

उत्तर

13

माइग्रेशन में गुण घोषित करने पर गलत आदेश। यह होना चाहिए:

t.string :name 

आपके अन्य विशेषताओं के लिए समान है। तिथि विशेषता को किसी अन्य चीज़ का नाम बदलें, क्योंकि यह एक संरक्षित कुंजी नाम है जिसे आपको कभी भी उपयोग नहीं करना चाहिए। ': नाम स्ट्रिंग' सही के बजाय 'नाम: स्ट्रिंग' :)

+0

बहहा अच्छी तरह से थोड़ा शर्मनाक है। धन्यवाद! – Mason

1

मैं एक ही त्रुटि थी क्योंकि मैं कम से कम करने के बजाय बड़े अक्षरों का इस्तेमाल किया

ऐसा नहीं है कि आप शायद की तरह जनरेटर चलाने लगता है। स्ट्रिंग के बजाय स्ट्रिंग।

1

मुझे एक ही त्रुटि थी। मैंने सोचा कि माइग्रेशन लिखते समय मैं बुलियन के बजाय "बूल" का उपयोग कर सकता था। बात वह नहीं है। जब मैंने rails g model model_name is_verified:bool रेल का उपयोग किया, तो सेटअप के बारे में शिकायत नहीं हुई। लेकिन जब मैं गया और प्रवासन चलाया तो यह इस त्रुटि को उठाया। मैंने इसे माइग्रेशन फ़ाइल में t.boolean में बदल दिया है और यह बिना किसी समस्या के काम करता है।

संबंधित मुद्दे