-1

I have been having some issues with rake db:migrate while setting up a pins scaffold for the One Mont Rails tutorial. When I try to migrate in the terminal I get the following error:

Taylors-MacBook-Pro:pinteresting taylorburton$ bin/rake db:migrate RAILS_ENV=development
== 20150410031405 AddUserIdToPins: migrating ==================================
-- add_column(:pins, :user_id, :integer)
rake aborted!
StandardError: An error has occurred, this and all later migrations canceled:

SQLite3::SQLException: duplicate column name: user_id: ALTER TABLE "pins" ADD "user_id" integer/Users/taylorburton/.rvm/gems/ruby-2.0.0-p598/gems/sqlite3-1.3.10/lib/sqlite3/database.rb:91:in `initialize'
/Users/taylorburton/.rvm/gems/ruby-2.0.0-p598/gems/sqlite3-1.3.10/lib/sqlite3/database.rb:91:in `new'
/Users/taylorburton/.rvm/gems/ruby-2.0.0-p598/gems/sqlite3-1.3.10/lib/sqlite3/database.rb:91:in `prepare'
/Users/taylorburton/.rvm/gems/ruby-2.0.0-p598/gems/sqlite3-1.3.10/lib/sqlite3/database.rb:134:in `execute'
/Users/taylorburton/.rvm/gems/ruby-2.0.0-p598/gems/activerecord-4.2.0/lib/active_record/connection_adapters/sqlite3_adapter.rb:333:in `block in execute'
/Users/taylorburton/.rvm/gems/ruby-2.0.0-p598/gems/activerecord-4.2.0/lib/active_record/connection_adapters/abstract_adapter.rb:466:in `block in log'
/Users/taylorburton/.rvm/gems/ruby-2.0.0-p598@global/gems/activesupport-4.2.0/lib/active_support/notifications/instrumenter.rb:20:in `instrument'
/Users/taylorburton/.rvm/gems/ruby-2.0.0-p598/gems/activerecord-4.2.0/lib/active_record/connection_adapters/abstract_adapter.rb:460:in `log'
/Users/taylorburton/.rvm/gems/ruby-2.0.0-p598/gems/activerecord-4.2.0/lib/active_record/connection_adapters/sqlite3_adapter.rb:333:in `execute'
/Users/taylorburton/.rvm/gems/ruby-2.0.0-p598/gems/activerecord-4.2.0/lib/active_record/connection_adapters/abstract/schema_statements.rb:381:in `add_column'
/Users/taylorburton/.rvm/gems/ruby-2.0.0-p598/gems/activerecord-4.2.0/lib/active_record/connection_adapters/sqlite3_adapter.rb:458:in `add_column'
/Users/taylorburton/.rvm/gems/ruby-2.0.0-p598/gems/activerecord-4.2.0/lib/active_record/migration.rb:662:in `block in method_missing'
/Users/taylorburton/.rvm/gems/ruby-2.0.0-p598/gems/activerecord-4.2.0/lib/active_record/migration.rb:632:in `block in say_with_time'
/Users/taylorburton/.rvm/gems/ruby-2.0.0-p598/gems/activerecord-4.2.0/lib/active_record/migration.rb:632:in `say_with_time'
/Users/taylorburton/.rvm/gems/ruby-2.0.0-p598/gems/activerecord-4.2.0/lib/active_record/migration.rb:652:in `method_missing'
/Users/taylorburton/Desktop/pinteresting/db/migrate/20150410031405_add_user_id_to_pins.rb:3:in `change'
/Users/taylorburton/.rvm/gems/ruby-2.0.0-p598/gems/activerecord-4.2.0/lib/active_record/migration.rb:606:in `exec_migration'
/Users/taylorburton/.rvm/gems/ruby-2.0.0-p598/gems/activerecord-4.2.0/lib/active_record/migration.rb:590:in `block (2 levels) in migrate'
/Users/taylorburton/.rvm/gems/ruby-2.0.0-p598/gems/activerecord-4.2.0/lib/active_record/migration.rb:589:in `block in migrate'
/Users/taylorburton/.rvm/gems/ruby-2.0.0-p598/gems/activerecord-4.2.0/lib/active_record/connection_adapters/abstract/connection_pool.rb:292:in `with_connection'
/Users/taylorburton/.rvm/gems/ruby-2.0.0-p598/gems/activerecord-4.2.0/lib/active_record/migration.rb:588:in `migrate'
/Users/taylorburton/.rvm/gems/ruby-2.0.0-p598/gems/activerecord-4.2.0/lib/active_record/migration.rb:765:in `migrate'
/Users/taylorburton/.rvm/gems/ruby-2.0.0-p598/gems/activerecord-4.2.0/lib/active_record/migration.rb:995:in `block in execute_migration_in_transaction'
/Users/taylorburton/.rvm/gems/ruby-2.0.0-p598/gems/activerecord-4.2.0/lib/active_record/migration.rb:1041:in `block in ddl_transaction'
/Users/taylorburton/.rvm/gems/ruby-2.0.0-p598/gems/activerecord-4.2.0/lib/active_record/connection_adapters/abstract/database_statements.rb:213:in `block in transaction'
/Users/taylorburton/.rvm/gems/ruby-2.0.0-p598/gems/activerecord-4.2.0/lib/active_record/connection_adapters/abstract/transaction.rb:188:in `within_new_transaction'
/Users/taylorburton/.rvm/gems/ruby-2.0.0-p598/gems/activerecord-4.2.0/lib/active_record/connection_adapters/abstract/database_statements.rb:213:in `transaction'
/Users/taylorburton/.rvm/gems/ruby-2.0.0-p598/gems/activerecord-4.2.0/lib/active_record/transactions.rb:220:in `transaction'
/Users/taylorburton/.rvm/gems/ruby-2.0.0-p598/gems/activerecord-4.2.0/lib/active_record/migration.rb:1041:in `ddl_transaction'
/Users/taylorburton/.rvm/gems/ruby-2.0.0-p598/gems/activerecord-4.2.0/lib/active_record/migration.rb:994:in `execute_migration_in_transaction'
/Users/taylorburton/.rvm/gems/ruby-2.0.0-p598/gems/activerecord-4.2.0/lib/active_record/migration.rb:956:in `block in migrate'
/Users/taylorburton/.rvm/gems/ruby-2.0.0-p598/gems/activerecord-4.2.0/lib/active_record/migration.rb:952:in `each'
/Users/taylorburton/.rvm/gems/ruby-2.0.0-p598/gems/activerecord-4.2.0/lib/active_record/migration.rb:952:in `migrate'
/Users/taylorburton/.rvm/gems/ruby-2.0.0-p598/gems/activerecord-4.2.0/lib/active_record/migration.rb:820:in `up'
/Users/taylorburton/.rvm/gems/ruby-2.0.0-p598/gems/activerecord-4.2.0/lib/active_record/migration.rb:798:in `migrate'
/Users/taylorburton/.rvm/gems/ruby-2.0.0-p598/gems/activerecord-4.2.0/lib/active_record/tasks/database_tasks.rb:137:in `migrate'
/Users/taylorburton/.rvm/gems/ruby-2.0.0-p598/gems/activerecord-4.2.0/lib/active_record/railties/databases.rake:44:in `block (2 levels) in <top (required)>'
/Users/taylorburton/.rvm/gems/ruby-2.0.0-p598@global/gems/activesupport-4.2.0/lib/active_support/dependencies.rb:268:in `load'
/Users/taylorburton/.rvm/gems/ruby-2.0.0-p598@global/gems/activesupport-4.2.0/lib/active_support/dependencies.rb:268:in `block in load'
/Users/taylorburton/.rvm/gems/ruby-2.0.0-p598@global/gems/activesupport-4.2.0/lib/active_support/dependencies.rb:240:in `load_dependency'
/Users/taylorburton/.rvm/gems/ruby-2.0.0-p598@global/gems/activesupport-4.2.0/lib/active_support/dependencies.rb:268:in `load'
-e:1:in `<main>'
Tasks: TOP => db:migrate
(See full trace by running task with --trace)
Taylors-MacBook-Pro:pinteresting taylorburton$ 
shivam
  • 16,048
  • 3
  • 56
  • 71

1 Answers1

0

Read the error message carefully. It says:

duplicate column name: user_id: ALTER TABLE "pins" ADD "user_id" 

This means user_id is already present in pins table when your migration is being carried out, which was unexpected. Hence the error.

If you drop user_id column from pins table this error will go and hopefully migration will succeed. However manually (by this I mean using SQL commands) altering Rails database is not recommended and in fact that itself is very likely to be the reason behind this error in first place.

Alternatively, if you dont care about any existing data, you can also do:

rake db:reset

Followed by rake db:migrate

shivam
  • 16,048
  • 3
  • 56
  • 71
  • Thanks @shivam, I thought that might be part of the issue. Unfortunately that didn't work either. I'm going to destroy the migration and see if the app still works without the user_id functionality as it did before. – Taylor Burton Apr 10 '15 at 15:04
  • what did you mean by - that didnt work? Did you get the same error again? or a different message? – shivam Apr 10 '15 at 15:08
  • well that certainly means the column was not removed properly. – shivam Apr 10 '15 at 15:28
  • thanks again @shivam. I will keep you posted when I have a chance to fix this issue. I know there are some issues with this tutorial, as it was originally created with an older version of Rails and so I have had to make a few adjustments along the way. In any case thanks! – Taylor Burton Apr 10 '15 at 16:20