2013-07-22 235 views
0

我得到了下面的錯誤,當我試圖做一個:rake db:migrateDB遷移錯誤

rake db:migrate 
-- selt() 
-- selt() 
rake aborted! 
ActiveRecord::MigrationProxy#disable_ddl_transaction delegated to migration.disable_ddl_transaction, but migration is nil: #<struct ActiveRecord::MigrationProxy name="DoNothingYet", version=20130722001522, filename="/Users/tidydee/Sites/simple_cms/db/migrate/20130722001522_do_nothing_yet.rb", scope=""> 
/Users/tidydee/.rvm/gems/ruby-2.0.0-p247/gems/activerecord-4.0.0/lib/active_record/migration.rb:712:in `rescue in disable_ddl_transaction' 
/Users/tidydee/.rvm/gems/ruby-2.0.0-p247/gems/activerecord-4.0.0/lib/active_record/migration.rb:708:in `disable_ddl_transaction' 
/Users/tidydee/.rvm/gems/ruby-2.0.0-p247/gems/activerecord-4.0.0/lib/active_record/migration.rb:1012:in `use_transaction?' 
/Users/tidydee/.rvm/gems/ruby-2.0.0-p247/gems/activerecord-4.0.0/lib/active_record/migration.rb:922:in `rescue in block in migrate' 
/Users/tidydee/.rvm/gems/ruby-2.0.0-p247/gems/activerecord-4.0.0/lib/active_record/migration.rb:919:in `block in migrate' 
/Users/tidydee/.rvm/gems/ruby-2.0.0-p247/gems/activerecord-4.0.0/lib/active_record/migration.rb:916:in `each' 
/Users/tidydee/.rvm/gems/ruby-2.0.0-p247/gems/activerecord-4.0.0/lib/active_record/migration.rb:916:in `migrate' 
/Users/tidydee/.rvm/gems/ruby-2.0.0-p247/gems/activerecord-4.0.0/lib/active_record/migration.rb:764:in `up' 
/Users/tidydee/.rvm/gems/ruby-2.0.0-p247/gems/activerecord-4.0.0/lib/active_record/migration.rb:742:in `migrate' 
/Users/tidydee/.rvm/gems/ruby-2.0.0-p247/gems/activerecord-4.0.0/lib/active_record/railties/databases.rake:42:in `block (2 levels) in <top (required)>' 
/Users/tidydee/.rvm/gems/ruby-2.0.0-p247/bin/ruby_noexec_wrapper:14:in `eval' 
/Users/tidydee/.rvm/gems/ruby-2.0.0-p247/bin/ruby_noexec_wrapper:14:in `<main>' 
Tasks: TOP => db:migrate 
(See full trace by running task with --trace) 

這是我DoNothingYet遷移文件:

class DoNothingYet < ActiveRecord::Migration 
    def change 
    end 

    def self.up 
    # instructions for changing the db to a new state 
    end 

    def selt.down 
    #intructiosn for changing the db back to the previous state 
    end 
end 

語法錯誤:

rake db:migrate 
rake aborted! 
/Users/tidydee/Sites/simple_cms/db/migrate/20130722001921_create_users.rb:4: syntax error, unexpected ':', expecting keyword_end 
    t.string "first_name" :limit => 25 
         ^
/Users/tidydee/Sites/simple_cms/db/migrate/20130722001921_create_users.rb:5: syntax error, unexpected ':', expecting keyword_end 
    t.string "last_name" :limit => 50 
         ^
/Users/tidydee/Sites/simple_cms/db/migrate/20130722001921_create_users.rb:6: syntax error, unexpected ':', expecting keyword_end 
    t.string "email" :default => "", :null => false 
        ^
/Users/tidydee/Sites/simple_cms/db/migrate/20130722001921_create_users.rb:7: syntax error, unexpected ':', expecting keyword_end 
    t.string "password" :limit => 40 
         ^
/Users/tidydee/.rvm/gems/ruby-2.0.0-p247/gems/activesupport-4.0.0/lib/active_support/dependencies.rb:228:in `require' 
/Users/tidydee/.rvm/gems/ruby-2.0.0-p247/gems/activesupport-4.0.0/lib/active_support/dependencies.rb:228:in `block in require' 
/Users/tidydee/.rvm/gems/ruby-2.0.0-p247/gems/activesupport-4.0.0/lib/active_support/dependencies.rb:213:in `load_dependency' 
/Users/tidydee/.rvm/gems/ruby-2.0.0-p247/gems/activesupport-4.0.0/lib/active_support/dependencies.rb:228:in `require' 
/Users/tidydee/.rvm/gems/ruby-2.0.0-p247/gems/activerecord-4.0.0/lib/active_record/migration.rb:718:in `load_migration' 
/Users/tidydee/.rvm/gems/ruby-2.0.0-p247/gems/activerecord-4.0.0/lib/active_record/migration.rb:714:in `migration' 
/Users/tidydee/.rvm/gems/ruby-2.0.0-p247/gems/activerecord-4.0.0/lib/active_record/migration.rb:708:in `disable_ddl_transaction' 
/Users/tidydee/.rvm/gems/ruby-2.0.0-p247/gems/activerecord-4.0.0/lib/active_record/migration.rb:1012:in `use_transaction?' 
/Users/tidydee/.rvm/gems/ruby-2.0.0-p247/gems/activerecord-4.0.0/lib/active_record/migration.rb:1004:in `ddl_transaction' 
/Users/tidydee/.rvm/gems/ruby-2.0.0-p247/gems/activerecord-4.0.0/lib/active_record/migration.rb:958:in `execute_migration_in_transaction' 
/Users/tidydee/.rvm/gems/ruby-2.0.0-p247/gems/activerecord-4.0.0/lib/active_record/migration.rb:920:in `block in migrate' 
/Users/tidydee/.rvm/gems/ruby-2.0.0-p247/gems/activerecord-4.0.0/lib/active_record/migration.rb:916:in `each' 
/Users/tidydee/.rvm/gems/ruby-2.0.0-p247/gems/activerecord-4.0.0/lib/active_record/migration.rb:916:in `migrate' 
/Users/tidydee/.rvm/gems/ruby-2.0.0-p247/gems/activerecord-4.0.0/lib/active_record/migration.rb:764:in `up' 
/Users/tidydee/.rvm/gems/ruby-2.0.0-p247/gems/activerecord-4.0.0/lib/active_record/migration.rb:742:in `migrate' 
/Users/tidydee/.rvm/gems/ruby-2.0.0-p247/gems/activerecord-4.0.0/lib/active_record/railties/databases.rake:42:in `block (2 levels) in <top (required)>' 

用戶遷移文件:

class CreateUsers < ActiveRecord::Migration 
    def self.up 
    create_table :users do |t| 
    t.string "first_name" :limit => 25 
    t.string "last_name" :limit => 50 
    t.string "email" :default => "", :null => false 
    t.string "password" :limit => 40 
    t.timestamps 

    end 
    end 

def self.down 
    drop_table:us 
end 

end 

有誰知道爲什麼?我怎麼能得到這個正確遷移

+0

你可以發佈你的'20130722001522_do_nothing_yet.rb'遷移文件嗎? –

+0

感謝您的幫助。請參閱我上面的更新。 – tidydee

回答

1

你在這部分有一個錯誤

def selt.down 
end 

它應該是:

def self.down 
end 

此外,在遷移你應該把

t.string "first_name", :limit => 25 

而不是

t.string "first_name" :limit => 25 
+0

謝謝!!!這樣一個愚蠢的小東西可能會導致這樣一個大問題。 我想知道你是否會知道爲什麼我會出現語法錯誤? 請參閱上述更新。 – tidydee

+0

如果我看得很清楚,你錯過了一個逗號。你可以發佈用戶的遷移文件嗎? –

+0

aH!我現在看到了,謝謝! – tidydee