微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

mysql – Rails 3 – 突然挂起的迁移错误

我突然遇到一个奇怪的错误.当我尝试运行rake spec时,我收到:

You have 2 pending migrations:
  20130405105004 CreateReports
  20130405113839 AddDocumentToReports

我不知道原因(我过去运行迁移所以我在数据库和schema.rb中有数据).

这是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.

这是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 ***

这里是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

我该如何解决这个问题?

解决方法:

如果这是在开发环境中并且您在数据库中没有重要数据,则运行

bundle exec rake db:migrate:reset

这将重建架构,但代价是核对所有数据.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐