我最近将Devise
和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
,但这似乎无助于我的情况。我仍然无法为我的新宝石运行数据库迁移。我怎么能绕过这个?我可以以某种方式省略链接迁移吗?
答案 0 :(得分:2)
在运行迁移之前,您是否手动创建了链接表?不知何故,您的迁移似乎与数据库不同步。
如果您不关心数据库中的任何数据,可以先执行rake db:drop
,然后执行rake db:migrate
。这会打乱数据库中的所有表,并从头开始再次运行所有迁移。
如果确实需要维护现有的数据库表,那么可以使用create_table :links
语句包装unless table_exists? :links
语句。