0

我最近将Deviseand添加CanCan到我的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,但这似乎对我的情况没有任何帮助。我仍然无法为我的新 gem 运行数据库迁移。我怎样才能解决这个问题?我可以以某种方式省略链接迁移吗?

4

1 回答 1

2

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

如果你不关心数据库中的任何数据,你可以先做一个rake db:drop,然后做rake db:migrate. 这会清除数据库中的所有表,并从头开始再次运行所有迁移。

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

于 2012-06-12T22:14:48.077 回答