2012-03-31 17 views
7

Vì vậy, tôi thực sự mới để Rails, và tôi nhận được một lỗi lạ mà tôi không hiểu. Tôi đã tạo một mô hình Sự kiện và tôi muốn di chuyển nó sang cơ sở dữ liệu của mình. Tuy nhiên, khi tôi chạy bundle exec rake db:migrate --trace đây là những gì tôi nhận được:Rails db: di chuyển hủy bỏ ... không chắc chắn lý do tại sao hoặc làm thế nào để sửa chữa nó

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 

Khi tôi chạy bundle exec rake, tôi nhận được:

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

My Tạo sự kiện di cư là:

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 

Tuy nhiên, tôi đã xóa mô hình Sự kiện bằng cách sử dụng rails destroy scaffold Event và tạo lại mô hình với các thuộc tính khác nhau. Điều này có thể là một phần của vấn đề?

Bất kỳ trợ giúp hoặc đề xuất nào được đánh giá cao!

+0

chúng ta có thể thấy việc tạo sự kiện di chuyển không? – Spyros

Trả lời

13

Thứ tự sai khi khai báo thuộc tính trong quá trình di chuyển. Nó phải là:

t.string :name 

Tương tự cho các thuộc tính khác của bạn. Cũng đổi tên thuộc tính date thành một cái gì đó khác, bởi vì nó là một tên khóa được bảo tồn mà bạn không bao giờ nên sử dụng.

Dường như bạn có thể chạy các máy phát điện như 'chuỗi: tên' thay vì đúng 'tên: string' :)

+0

Bahaha cũng hơi xấu hổ một chút. Cảm ơn! – Mason

1

tôi đã có lỗi tương tự vì tôi sử dụng chữ in hoa thay vì tối thiểu. Chuỗi thay vì chuỗi.

1

Tôi đã gặp lỗi tương tự. Tôi nghĩ khi viết di chuyển mà tôi có thể sử dụng "bool" thay vì boolean. Đó không phải là tình huống. Khi tôi sử dụng thanh ray rails g model model_name is_verified:bool không phàn nàn về thiết lập. Nhưng khi tôi đã đi và chạy di chuyển nó đã nêu ra lỗi này. Tôi chỉ cần thay đổi nó trong tập tin di chuyển để t.boolean và nó làm việc mà không có vấn đề.

Các vấn đề liên quan