Rails 3迁移搞砸了

时间:2012-06-12 21:53:01

标签: ruby-on-rails-3 migration

我最近将DeviseCanCan添加到我的Rails 3.2.3应用中,需要运行rake db:migrate才能让它们正常运行。我有一个我已经创建的链接的迁移文件,它在某种程度上与我运行rake db:migrate

时发生冲突
==  CreateLinks: migrating ====================================================
-- create_table(:links)
rake aborted!
An error has occurred, this and all later migrations canceled:

SQLite3::SQLException: table "links" already exists: CREATE TABLE "links" ("id"INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "url" varchar(255), "description" var
char(255), "created_at" datetime NOT NULL, "points" integer, "updated_at" dateti
me NOT NULL) 

我尝试了rake db:migrate:reset,但这似乎无助于我的情况。我仍然无法为我的新宝石运行数据库迁移。我怎么能绕过这个?我可以以某种方式省略链接迁移吗?

1 个答案:

答案 0 :(得分:2)

在运行迁移之前,您是否手动创建了链接表?不知何故,您的迁移似乎与数据库不同步。

如果您不关心数据库中的任何数据,可以先执行rake db:drop,然后执行rake db:migrate。这会打乱数据库中的所有表,并从头开始再次运行所有迁移。

如果确实需要维护现有的数据库表,那么可以使用create_table :links语句包装unless table_exists? :links语句。