Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Rails db:migrate aborting...not sure why or how to fix it

So I'm really new to Rails, and I'm getting a strange error that I don't understand. I created an Event model and I want to migrate it to my database. However, when I run bundle exec rake db:migrate --trace this is what I get:

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

When I run bundle exec rake, I get:

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

My Create events migration is:

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

However, I deleted the Event model using rails destroy scaffold Event and made it again with different properties. Could this be part of the problem?

Any help or suggestions are much appreciated!

like image 771
Mason Avatar asked Mar 31 '12 22:03

Mason


3 Answers

Wrong order on declaring attributes in the migration. It should be :

t.string :name

The same for your other attributes. Also rename the date attribute to something else, because it is a preserved key name that you should never use.

It seems that you probably run the generator like 'string:name' instead of the correct 'name:string' :)

like image 158
Spyros Avatar answered Nov 04 '22 20:11

Spyros


I had the same error because I used capital letters instead of minimal. String instead of string.

like image 24
migueloop Avatar answered Nov 04 '22 22:11

migueloop


I had the same error. I thought when writing the migration that I could use "bool" instead of boolean. That is not the case. When I used the rails g model model_name is_verified:bool rails did not complain about the setup. But when I went and ran the migration it raised this error. I just changed it in the migration file to t.boolean and it worked without issue.

like image 20
Matt Avatar answered Nov 04 '22 22:11

Matt