1

I've created another user model after destroying the old one through $ rails destroy controller user_controller and $ rails destroy model user.

I entered following to the command line to create a new user model:

$rails generate controller Users new --no-test-framework

$ rails generate model User name:string email:string

However, errors occur when I ran $ bundle exec rake db:migrate:

==  CreateUsers: migrating ====================================================
-- create_table(:users)
rake aborted!
An error has occurred, this and all later migrations canceled:

SQLite3::SQLException: table "users" already exists: CREATE TABLE "users" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255), "email" varchar(255), "created_at" datetime, "updated_at" datetime) /usr/local/rvm/gems/ruby-1.9.3-p392/gems/sqlite3-1.3.8/lib/sqlite3/database.rb:91:in `initialize'
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/sqlite3-1.3.8/lib/sqlite3/database.rb:91:in `new'
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/sqlite3-1.3.8/lib/sqlite3/database.rb:91:in `prepare'
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/sqlite3-1.3.8/lib/sqlite3/database.rb:134:in `execute'
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/activerecord-4.0.2/lib/active_record/connection_adapters/sqlite3_adapter.rb:331:in `block in execute'
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/activerecord-4.0.2/lib/active_record/connection_adapters/abstract_adapter.rb:435:in `block in log'
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/activesupport-4.0.2/lib/active_support/notifications/instrumenter.rb:20:in `instrument'
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/activerecord-4.0.2/lib/active_record/connection_adapters/abstract_adapter.rb:430:in `log'
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/activerecord-4.0.2/lib/active_record/connection_adapters/sqlite3_adapter.rb:331:in `execute'
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/activerecord-4.0.2/lib/active_record/connection_adapters/abstract/schema_statements.rb:190:in `create_table'
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/activerecord-4.0.2/lib/active_record/migration.rb:625:in `block in method_missing'
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/activerecord-4.0.2/lib/active_record/migration.rb:597:in `block in say_with_time'
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/activerecord-4.0.2/lib/active_record/migration.rb:597:in `say_with_time'
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/activerecord-4.0.2/lib/active_record/migration.rb:617:in `method_missing'
/Users/lydia/Documents/Ruby/rails_projects/first_app/db/migrate/20131216225255_create_users.rb:3:in `change'
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/activerecord-4.0.2/lib/active_record/migration.rb:571:in `exec_migration'
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/activerecord-4.0.2/lib/active_record/migration.rb:555:in `block (2 levels) in migrate'
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/activerecord-4.0.2/lib/active_record/migration.rb:554:in `block in migrate'
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/activerecord-4.0.2/lib/active_record/connection_adapters/abstract/connection_pool.rb:294:in `with_connection'
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/activerecord-4.0.2/lib/active_record/migration.rb:553:in `migrate'
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/activerecord-4.0.2/lib/active_record/migration.rb:709:in `migrate'
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/activerecord-4.0.2/lib/active_record/migration.rb:959:in `block in execute_migration_in_transaction'
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/activerecord-4.0.2/lib/active_record/migration.rb:1005:in `block in ddl_transaction'
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/activerecord-4.0.2/lib/active_record/connection_adapters/abstract/database_statements.rb:202:in `block in transaction'
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/activerecord-4.0.2/lib/active_record/connection_adapters/abstract/database_statements.rb:210:in `within_new_transaction'
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/activerecord-4.0.2/lib/active_record/connection_adapters/abstract/database_statements.rb:202:in `transaction'
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/activerecord-4.0.2/lib/active_record/transactions.rb:209:in `transaction'
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/activerecord-4.0.2/lib/active_record/migration.rb:1005:in `ddl_transaction'
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/activerecord-4.0.2/lib/active_record/migration.rb:958:in `execute_migration_in_transaction'
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/activerecord-4.0.2/lib/active_record/migration.rb:920:in `block in migrate'
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/activerecord-4.0.2/lib/active_record/migration.rb:916:in `each'
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/activerecord-4.0.2/lib/active_record/migration.rb:916:in `migrate'
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/activerecord-4.0.2/lib/active_record/migration.rb:764:in `up'
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/activerecord-4.0.2/lib/active_record/migration.rb:742:in `migrate'
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/activerecord-4.0.2/lib/active_record/railties/databases.rake:42:in `block (2 levels) in <top (required)>'
Tasks: TOP => db:migrate

According to Michael Hartl's book, the first time db:migrate is run, it creates a file called db/development.sqlite3, which is an SQLite5 database.

Installed gems:

  * actionmailer (4.0.2)
  * actionpack (4.0.2)
  * activemodel (4.0.2)
  * activerecord (4.0.2)
  * activerecord-deprecated_finders (1.0.3)
  * activesupport (4.0.2)
  * arel (4.0.1)
  * atomic (1.1.14)
  * bootstrap-sass (2.3.2.0)
  * builder (3.1.4)
  * bundler (1.3.5)
  * capybara (2.1.0)
  * childprocess (0.3.9)
  * coffee-rails (4.0.1)
  * coffee-script (2.2.0)
  * coffee-script-source (1.6.3)
  * diff-lcs (1.2.5)
  * erubis (2.7.0)
  * execjs (2.0.2)
  * ffi (1.9.3)
  * hike (1.2.3)
  * i18n (0.6.9)
  * jbuilder (1.0.2)
  * jquery-rails (3.0.4)
  * json (1.8.1)
  * mail (2.5.4)
  * mime-types (1.25.1)
  * mini_portile (0.5.2)
  * minitest (4.7.5)
  * multi_json (1.8.2)
  * nokogiri (1.6.0)
  * polyglot (0.3.3)
  * rack (1.5.2)
  * rack-test (0.6.2)
  * rails (4.0.2)
  * railties (4.0.2)
  * rake (10.1.0)
  * rdoc (3.12.2)
  * rspec-core (2.13.1)
  * rspec-expectations (2.13.0)
  * rspec-mocks (2.13.1)
  * rspec-rails (2.13.1)
  * rubyzip (0.9.9)
  * sass (3.2.12)
  * sass-rails (4.0.1)
  * sdoc (0.3.20)
  * selenium-webdriver (2.35.1)
  * sprockets (2.10.1)
  * sprockets-rails (2.0.1)
  * sqlite3 (1.3.8)
  * thor (0.18.1)
  * thread_safe (0.1.3)
  * tilt (1.4.1)
  * treetop (1.4.15)
  * turbolinks (1.1.1)
  * tzinfo (0.3.38)
  * uglifier (2.1.1)
  * websocket (1.0.7)
  * xpath (2.0.0)

I don't know what to do. Even though I've installed sqlite and have created several models, it never generated a file called db/development.sqlite3.

wag0325
  • 1,008
  • 5
  • 18
  • 34

2 Answers2

1

The user's table still exists in your database. You need to create a migration to remove it or manually remove it from the database.

To do a migration you just use rails g migration RemoveUsers then drop_table :users. You would only want to use a migration if you made the users table a long time ago and have other migrations that alter the table. If you have made the user model temporarily or only locally then you should be ok to drop the table manually.

jeremy.clark
  • 842
  • 6
  • 13
1

You have to run rake db:rollback STEP=X to rollback the previous migrations and then modify your existed migrations and then rake db:migrate.

if you want to re-do everything, just go to the database and delete that db, then create --> migrate.

McGar
  • 205
  • 1
  • 10