2011-01-24 185 views
0

我正在关注RailsTutorial.org教程,第7.3节,并尝试使用rake将数据库迁移添加到现有数据库的密码列。看来正在发生的事情是,rails重新运行先前的迁移文件并尝试添加表Users(已存在),而不是最新的迁移文件并添加密码列。任何帮助,将不胜感激!Rails DB迁移错误,Rails重新运行以前的迁移?

这里是我跑生成迁移文件中的代码:

$ rails generate migration add_password_to_users encrypted_password:string 

然后我跑耙分贝:迁移并得到了以下错误:

An error has occurred, this and all later migrations canceled: 

SQLite3::SQLException: table "users" already exists: CREATE TABLE "users" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255), "email" varchar(255), "created_at" datetime, "updated_at" datetime) 
+0

似乎你做了一个以前的迁移创建用户表的副本。看看你的数据库/迁移文件夹 – apneadiving 2011-01-24 17:48:47

+0

应该有两个迁移包含:create_table:users – apneadiving 2011-01-24 17:54:21

回答

0

看起来有一个其他迁移文件存在问题 - 我将该文件移出migrate文件夹,然后重新运行rake并运行。

1

Rails会运行,其数量的任何迁移不在相关数据库的schema_migrations表中。因此,如果它没有用于创建用户表的迁移编号,它将运行该迁移,如果该表恰好已经存在,则会发生这种迁移。

我不熟悉你正在谈论的教程 - 你能带我看看你已经完成了你的迁移吗?