Table already exists error

Hi all,

I have been learning Rails by working through Carneiro and Barazi’s Beginning Rails 3. This has went well despite the fact that I am using Rails 4.2.6. I hit a little snag when in chapter 5, which goes over associations, I tried to create a has_many association between a user and that user’s articles, specifically in the code that is supposed to sort the user’s articles first by order of creation, and then by alphabetical order. I fixed this problem, with a little help from the Ruby Talk mailing list, with a lambda scope block, as follows in app/models/user.rb:

  class User <

ActiveRecord::Base
has_one :profile
has_many :articles, → { order ‘published_at DESC, title ASC’ } :dependent => :nullify end

This seemed to work, so I went through the steps listed again, taking a stab that I could

overwrite everything rather than just starting over. When I ran rake db:migrate, I got the following error:

== 20161114230702 CreateArticlesCategories: migrating

Hi all,

I have been learning Rails by working through Carneiro and Barazi's *Beginning Rails 3*. This has went well despite the fact that I am using Rails 4.2.6. I hit a little snag when in chapter 5, which goes over associations, I tried to create a has_many association between a user and that user's articles, specifically in the code that is supposed to sort the user's articles first by order of creation, and then by alphabetical order. I fixed this problem, with a little help from the Ruby Talk mailing list, with a lambda scope block, as follows in app/models/user.rb:

class User < ActiveRecord::Base      has_one :profile      has_many :articles, -> { order 'published_at DESC, title ASC' } :dependent => :nullify end

This seemed to work, so I went through the steps listed again, taking a stab that I could overwrite everything rather than just starting over. When I ran rake db:migrate, I got the following error:

== 20161114230702 CreateArticlesCategories: migrating

-- create_table(:articles_categories, {:id=>false}) rake aborted! StandardError: An error has occurred, this and all later migrations canceled:

SQLite3::SQLException: table "articles_categories" already exists: CREATE TABLE

"articles_categories" ("article_id" integer, "category_id" integer)

/home/john/src/ror/blog/db/migrate/20161114230702_create_articles_categories.rb:3:in `change'

You are trying to run a migration (20161114230702_create_articles_categories.rb) that adds that table, but the table already exists in the database. Have you added a second migration that tries to add it again? If it is not that then the easiest solution may be to delete and recreate the db again.

Colin

Try to comment out the method that creating the table in migration 20161114230702_create_articles_categories.rb.

That is not really appropriate unless the OP understands why this has happened.

Colin

Thanks for correcting me Colin. :slight_smile:

I did not have a second migration trying to add it again, so I ran:

rake db:drop db:create db:migrate

``

I was able to do everything after that.

Thank you for the assistance!