【问题标题】:Rails DB Migrate Error, Rails Re-running previous migration?Rails DB 迁移错误,Rails 重新运行以前的迁移?
【发布时间】:2013-08-13 22:31:56
【问题描述】:

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

这是我为生成迁移文件而运行的代码:

$ 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)

【问题讨论】:

  • 似乎您复制了之前创建用户表的迁移。查看您的 db/migrate 文件夹
  • 应该有两个迁移包含:create_table :users

标签: ruby-on-rails ruby


【解决方案1】:

Rails 将运行编号不在相关数据库的 schema_migrations 表中的任何迁移。因此,如果它没有用于创建 users 表的迁移编号,它将运行该迁移,如果该表恰好已经存在,它将像您所看到的那样爆炸。

我不熟悉你所说的教程 - 你能带我了解一下你已经完成的迁移吗?

【讨论】:

    【解决方案2】:

    似乎其他迁移文件之一存在问题 - 我将该文件移出迁移文件夹并重新运行 rake,它可以正常工作。

    【讨论】:

      猜你喜欢
      • 2018-05-30
      • 2011-04-29
      • 2013-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-28
      • 2015-04-04
      相关资源
      最近更新 更多