Duplicate column name error when running migration

migration, paperclip, ruby-on-rails, sqlite

Solution

That happens if you migrations are not in sync with the database schema. This could happen if

- you modified the database schema "by hand"

- you changed a migration file being run

- migrations have not been updated in the `schema_migrations` table

If you are not relying on the data in the database, a `rake db:reset` would re-run all migrations from scratch. Otherwise you have to make the conflicting migration recognized as already-run by adding to the `schema_migrations` table.

See RailsGuides of migrations as well.

Problem

Whenever I run a migration in my Rails app, I get an error from SQLite3: ``` SQLite3::SQLException: duplicate column name: photo_file_name: ALTER TABLE "users" ADD "photo_file_name" varchar(255) ``` I already have a "Add Photo to User" migration. Here it is: ``` class AddAttachmentPhotoToUsers < ActiveRecord::Migration def self.up change_table :users do |t| t.has_attached_file :photo end end def self.down drop_attached_file :users, :photo end end ``` And here is the user migration: ``` class CreateUsers < ActiveRecord::Migration def change create_table :users do |t| t.string :name t.string :title t.string :department t.text :skills t.boolean :available t.timestamps end end end ``` I'm a bit confused by it because it's telling me there is a duplicate column name "photo_file_name" but that I need to add it to the Users table? That doesn't make sense. Shouldn't I need to remove it? Let me know if you need any other details about my app.

Original source