Rails 3 - suddenly pending migrations error

mysql, ruby, ruby-on-rails, ruby-on-rails-3

Solution

If this is on a dev environment and you have no important data in the db, then run

bundle exec rake db:migrate:reset

This will rebuild the schema, but at the cost of nuking all your data.

Problem

I suddenly met a strange error. When i try to run `rake spec` i recieve: ``` You have 2 pending migrations: 20130405105004 CreateReports 20130405113839 AddDocumentToReports ``` I don't know the reason for that (i run migrations in the past so i have data in the database and schema.rb). Here is `rake spec --trace`: ``` ** Invoke spec (first_time) ** Invoke test:prepare (first_time) ** Invoke db:test:prepare (first_time) ** Invoke db:abort_if_pending_migrations (first_time) ** Invoke environment (first_time) ** Execute environment ** Execute db:abort_if_pending_migrations You have 2 pending migrations: 20130405105004 CreateReports 20130405113839 AddDocumentToReports Run "rake db:migrate" to update your database then try again. ``` Here is `rake db:migrate:status`: ``` ... up 20121210112419 Create simple captcha data up 20130214110545 Add weeknum to alerts down 20130405105004 Create reports down 20130405113839 Add document to reports up 20121018133601 *** NO FILE *** up 20121018163051 *** NO FILE *** up 20121024124111 *** NO FILE *** ``` And here is `rake db:migrate` ``` == CreateReports: migrating ================================================== -- create_table(:reports) rake aborted! An error has occurred, all later migrations canceled: Mysql2::Error: Table 'reports' already exists: CREATE TABLE `reports` (`id` int(11) DEFAULT NULL auto_increment PRIMARY KEY, `user_id` int(11), `ready_status` tinyint(1) DEFAULT 0, `created_at` datetime, `updated_at` datetime) ENGINE=InnoDB Tasks: TOP => db:migrate ``` How can i fix that?

Original source