Ruby on rails rails数据库:迁移不工作
我有一个错误命名的控制器,最后通过Ruby on rails rails数据库:迁移不工作,ruby-on-rails,ruby,controller,ruby-on-rails-5.1,Ruby On Rails,Ruby,Controller,Ruby On Rails 5.1,我有一个错误命名的控制器,最后通过rails destroy controller将其从命令行中删除。我最终重新创建了所有内容,但每次运行railsdb:migrate时都会出现以下错误 SQLite3::SQLException: table "advertisements" already exists: CREATE TABLE "advertisements" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "title" varcha
rails destroy controller
将其从命令行中删除。我最终重新创建了所有内容,但每次运行railsdb: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)
我不知所措,在过去的两天里我一直在处理这个小小的错误,每次我似乎都在正确的轨道上,是的。如果有人能告诉我为什么会发生这种错误,以及我能做些什么,我将不胜感激。提前感谢您应该添加一个删除广告表的迁移。查看
db/migrate
目录。您是否有两个xxxxx\u create\u advisions.rb
文件(其中xxxxxx
是一组数字,更准确地说是创建此迁移的时间戳)
如果是这样,则删除其中一个(如果两个都有相同的列定义,则不管是哪一个,除非您有外键依赖项)
然后重试。问题是因为您的“销毁控制器”命令没有删除表“广告”。有两种解决方案:
drop\u table:advisions
,这将删除现有表,然后继续迁移您可以在db/migrate/文件夹中找到名为“xxxxx\u create\u advisions.rb”的迁移。您的迁移以前是否因错误而失败?这可能是因为部分db:migration-由于错误,它最终创建了表。。一旦您修复了迁移文件,它将无法再次执行。这是您的本地环境,所以只需手动删除该表并尝试运行迁移。