rails db:migrate 不工作

rails db:migrate not working

我有一个错误命名的控制器,最后通过 rails destroy controller 从命令行中删除了它。我最终重新创建了所有内容,但每次 运行 rails db:migrate 我都会收到以下错误。

SQLite3::SQLException: table "advertisements" already exists: CREATE TABLE "advertisements" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "title" varchar, "copy" text, "price" integer, "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL)

我不知所措,过去两天我一直在处理这个小错误,每次我似乎都走上了正确的轨道,是的。如果有人能告诉我为什么会发生此错误以及我能做什么,我将不胜感激。提前致谢

您应该添加一个删除广告的迁移 table。

查看 db/migrate 目录。您是否有两个 xxxxx_create_advertisements.rb 文件(其中 xxxxxx 是一串数字,更准确地说是创建此迁移时的时间戳)?

如果是,则删除其中之一(如果两者具有相同的列定义,那么哪一个都无关紧要 - 除非您有外键依赖项)。

然后重试。

问题是因为您的 'destroy_controller' 命令以某种方式没有删除 table 'advertisements'。有 2 种解决方案:

  1. 如果 table 中没有任何更改,则不需要重新创建 table。只需注释掉您正在其中创建 table 广告 table.

  2. 的迁移
  3. 如果您真的想重新创建 table,请在创建 table 之前在您的迁移中添加 drop_table :advertisements,这将删除您现有的 table 然后继续迁移。

您可以在 db/migrate/ 文件夹中找到迁移,其名称类似于 'xxxxx_create_advertisements.rb'