Paritosh
Paritosh

Reputation: 1

Trouble with the rake db:migrate command

rake db:migrate

Stack trace

> == 20160315111403 Books: migrating ============================================
> -- create_table(:books) rake aborted! An error has occurred, all later migrations canceled:

Error:

> Mysql2::Error: Table 'books' already exists: CREATE TABLE `books`
> (`id` int(11) auto_increment PRIMARY KEY, `title` varchar(32) NOT
> NULL, `price` float, `subject_id` int(11), `description` text,
> `created_at` datetime)
> ENGINE=InnoDB/home/paritosh/.rvm/gems/ruby-2.2.3/gems/activerecord-4.2.4/lib/active_record/connection_adapters/abstract_mysql_adapter.rb:305:in
> `query'
> /home/paritosh/.rvm/gems/ruby-2.2.3/gems/activerecord-4.2.4/lib/active_record/connection_adapters/abstract_mysql_adapter.rb:305:in
> `block in execute'
> /home/paritosh/.rvm/gems/ruby-2.2.3/gems/activerecord-4.2.4/lib/active_record/connection_adapters/abstract_adapter.rb:473:in `block in log'
> /home/paritosh/.rvm/gems/ruby-2.2.3/gems/activesupport-4.2.4/lib/active_support/notifications/instrumenter.rb:20:in
> `instrument'
> /home/paritosh/.rvm/gems/ruby-2.2.3/gems/activerecord-4.2.4/lib/active_record/connection_adapters/abstract_adapter.rb:467:in `log'
> /home/paritosh/.rvm/gems/ruby-2.2.3/gems/activerecord-4.2.4/lib/active_record/connection_adapters/abstract_mysql_adapter.rb:305:in
> `execute'
> /home/paritosh/.rvm/gems/ruby-2.2.3/gems/activerecord-4.2.4/lib/active_record/connection_adapters/mysql2_adapter.rb:231:in
> `execute'
> /home/paritosh/.rvm/gems/ruby-2.2.3/gems/activerecord-4.2.4/lib/active_record/connection_adapters/abstract/schema_statements.rb:208:in
> `create_table'
> /home/paritosh/.rvm/gems/ruby-2.2.3/gems/activerecord-4.2.4/lib/active_record/connection_adapters/abstract_mysql_adapter.rb:468:in
> `create_table'
> /home/paritosh/.rvm/gems/ruby-2.2.3/gems/activerecord-4.2.4/lib/active_record/migration.rb:662:in
> `block in method_missing'
> /home/paritosh/.rvm/gems/ruby-2.2.3/gems/activerecord-4.2.4/lib/active_record/migration.rb:631:in
> `block in say_with_time'
> /home/paritosh/.rvm/gems/ruby-2.2.3/gems/activerecord-4.2.4/lib/active_record/migration.rb:631:in
> `say_with_time'
> /home/paritosh/.rvm/gems/ruby-2.2.3/gems/activerecord-4.2.4/lib/active_record/migration.rb:651:in
> `method_missing'
> /home/paritosh/.rvm/gems/ruby-2.2.3/gems/activerecord-4.2.4/lib/active_record/migration.rb:416:in
> `method_missing'
> /home/paritosh/library/db/migrate/20160315111403_books.rb:4:in `up'
> /home/paritosh/.rvm/gems/ruby-2.2.3/gems/activerecord-4.2.4/lib/active_record/migration.rb:568:in
> `up'
> /home/paritosh/.rvm/gems/ruby-2.2.3/gems/activerecord-4.2.4/lib/active_record/migration.rb:608:in
> `exec_migration'
> /home/paritosh/.rvm/gems/ruby-2.2.3/gems/activerecord-4.2.4/lib/active_record/migration.rb:589:in
> `block (2 levels) in migrate'
> /home/paritosh/.rvm/gems/ruby-2.2.3/gems/activerecord-4.2.4/lib/active_record/migration.rb:588:in
> `block in migrate'
> /home/paritosh/.rvm/gems/ruby-2.2.3/gems/activerecord-4.2.4/lib/active_record/connection_adapters/abstract/connection_pool.rb:292:in
> `with_connection'
> /home/paritosh/.rvm/gems/ruby-2.2.3/gems/activerecord-4.2.4/lib/active_record/migration.rb:587:in
> `migrate'
> /home/paritosh/.rvm/gems/ruby-2.2.3/gems/activerecord-4.2.4/lib/active_record/migration.rb:765:in
> `migrate'
> /home/paritosh/.rvm/gems/ruby-2.2.3/gems/activerecord-4.2.4/lib/active_record/migration.rb:995:in
> `block in execute_migration_in_transaction'
> /home/paritosh/.rvm/gems/ruby-2.2.3/gems/activerecord-4.2.4/lib/active_record/migration.rb:1043:in
> `ddl_transaction'
> /home/paritosh/.rvm/gems/ruby-2.2.3/gems/activerecord-4.2.4/lib/active_record/migration.rb:994:in
> `execute_migration_in_transaction'
> /home/paritosh/.rvm/gems/ruby-2.2.3/gems/activerecord-4.2.4/lib/active_record/migration.rb:956:in
> `block in migrate'
> /home/paritosh/.rvm/gems/ruby-2.2.3/gems/activerecord-4.2.4/lib/active_record/migration.rb:952:in
> `each'
> /home/paritosh/.rvm/gems/ruby-2.2.3/gems/activerecord-4.2.4/lib/active_record/migration.rb:952:in
> `migrate'
> /home/paritosh/.rvm/gems/ruby-2.2.3/gems/activerecord-4.2.4/lib/active_record/migration.rb:820:in
> `up'
> /home/paritosh/.rvm/gems/ruby-2.2.3/gems/activerecord-4.2.4/lib/active_record/migration.rb:798:in
> `migrate'
> /home/paritosh/.rvm/gems/ruby-2.2.3/gems/activerecord-4.2.4/lib/active_record/tasks/database_tasks.rb:137:in
> `migrate'
> /home/paritosh/.rvm/gems/ruby-2.2.3/gems/activerecord-4.2.4/lib/active_record/railties/databases.rake:44:in
> `block (2 levels) in <top (required)>'
> /home/paritosh/.rvm/gems/ruby-2.2.3/gems/rake-10.0.4/lib/rake/task.rb:246:in
> `call'
> /home/paritosh/.rvm/gems/ruby-2.2.3/gems/rake-10.0.4/lib/rake/task.rb:246:in
> `block in execute'
> /home/paritosh/.rvm/gems/ruby-2.2.3/gems/rake-10.0.4/lib/rake/task.rb:241:in
> `each'
> /home/paritosh/.rvm/gems/ruby-2.2.3/gems/rake-10.0.4/lib/rake/task.rb:241:in
> `execute'
> /home/paritosh/.rvm/gems/ruby-2.2.3/gems/rake-10.0.4/lib/rake/task.rb:184:in
> `block in invoke_with_call_chain'
> /home/paritosh/.rvm/gems/ruby-2.2.3/gems/rake-10.0.4/lib/rake/task.rb:177:in
> `invoke_with_call_chain'
> /home/paritosh/.rvm/gems/ruby-2.2.3/gems/rake-10.0.4/lib/rake/task.rb:170:in
> `invoke'
> /home/paritosh/.rvm/gems/ruby-2.2.3/gems/rake-10.0.4/lib/rake/application.rb:143:in
> `invoke_task'
> /home/paritosh/.rvm/gems/ruby-2.2.3/gems/rake-10.0.4/lib/rake/application.rb:101:in
> `block (2 levels) in top_level'
> /home/paritosh/.rvm/gems/ruby-2.2.3/gems/rake-10.0.4/lib/rake/application.rb:101:in
> `each'
> /home/paritosh/.rvm/gems/ruby-2.2.3/gems/rake-10.0.4/lib/rake/application.rb:101:in
> `block in top_level'
> /home/paritosh/.rvm/gems/ruby-2.2.3/gems/rake-10.0.4/lib/rake/application.rb:110:in
> `run_with_threads'
> /home/paritosh/.rvm/gems/ruby-2.2.3/gems/rake-10.0.4/lib/rake/application.rb:95:in
> `top_level'
> /home/paritosh/.rvm/gems/ruby-2.2.3/gems/rake-10.0.4/lib/rake/application.rb:73:in
> `block in run'
> /home/paritosh/.rvm/gems/ruby-2.2.3/gems/rake-10.0.4/lib/rake/application.rb:160:in
> `standard_exception_handling'
> /home/paritosh/.rvm/gems/ruby-2.2.3/gems/rake-10.0.4/lib/rake/application.rb:70:in
> `run'
> /home/paritosh/.rvm/gems/ruby-2.2.3/bin/ruby_executable_hooks:15:in
> `eval'
> /home/paritosh/.rvm/gems/ruby-2.2.3/bin/ruby_executable_hooks:15:in
> `<main>' Tasks: TOP => db:migrate (See full trace by running task with
> --trace)

Upvotes: 0

Views: 121

Answers (3)

I'd try this:

$ rake db:drop
$ rake db:create
$ rake db:migrate

rake db:drop will discard the current database. If you have generated databases for the environments production, development and test, maybe you need to run rake db:drop:all to get rid of all these databases with a single command, for recreating them later. If you want to discard just development database, for instance, you may run RAILS_ENV=development rake db:drop.

rake db:create will create the database again. Then again, if you want to create databases for all your environments (production, development and test), you may run rake db:create:all.

Finally,

rake db:migrate will perform all migrations generated since you created your database model. This will put your current database in an up-to-date position.

These three operations will give you a fresh new database and you'll not see this "table already exists" when running you migration any more.

By the way, if you have inserted data with db/seed.rb, then it is time to run rake db:seed again to populate your database.

Upvotes: 1

Rajdeep Singh
Rajdeep Singh

Reputation: 17834

Try doing this if the existing data is not important

rake db:schema:load

Check out more db commands here

Hope this helps!

Upvotes: 0

Uday kumar das
Uday kumar das

Reputation: 1613

use this code:

rake db:rollback or rake db:migrate:down VERSION=<timestamp>

and then use rake db:migrate

Upvotes: 0

Related Questions