我正在遵循RailsTutorial.org教程的第7.3节,并尝试使用rake进行数据库迁移,以便将密码列添加到现有数据库。似乎正在发生的事情是rails重新运行以前的迁移文件并尝试添加表Users(已存在)而不是最新的迁移文件并添加密码列。任何帮助,将不胜感激!
以下是我为生成迁移文件而运行的代码:
$ rails generate migration add_password_to_users encrypted_password:string
然后我运行了rake db:migrate并收到以下错误:
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 :(得分:1)
Rails将运行其编号不在相关数据库的schema_migrations表中的任何迁移。因此,如果它没有用于创建users表的迁移的编号,它将运行该迁移,如果表已经存在,那将会爆炸。
我不熟悉您正在谈论的教程 - 您能否介绍一下您已经完成的迁移工作?
答案 1 :(得分:0)
看来其他一个迁移文件出现了问题 - 我将该文件移出了migrate文件夹并重新运行了rake并且运行正常。