【问题标题】:Rake db:migrate error, table already existsRake db:migrate 错误,表已经存在
【发布时间】:2015-11-24 14:39:06
【问题描述】:

我不小心创建了一个我不需要的迁移,因此我删除了该文件,并在我尝试运行 rake db:migrate 时创建了一个新的迁移,我不断收到此错误。我是使用 SQlite3 gem 和 Ruby on Rails 4

StandardError: An error has occurred, this and all later migrations canceled:
SQLite3::SQLException: table "categories" already exists: CREATE TABLE "categories" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "category_name" varchar, "created_at" datetime NOT NULL, "updated_at" datetime NO
T NULL) D:/muse/db/migrate/20150830113519_create_categories.rb:3:in `change'
D:in `migrate'
ActiveRecord::StatementInvalid: SQLite3::SQLException: table "categories" already exists: CREATE TABLE "categories" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "category_name" varchar, "created_at" datetime NO
T NULL, "updated_at" datetime NOT NULL)
D:/muse/db/migrate/20150830113519_create_categories.rb:3:in `change'
D:in `migrate'
SQLite3::SQLException: table "categories" already exists
D:/muse/db/migrate/20150830113519_create_categories.rb:3:in `change'
D:in `migrate'
Tasks: TOP => db:migrate
(See full trace by running task with --trace)

【问题讨论】:

    标签: ruby-on-rails-4 sqlite dbmigrate


    【解决方案1】:

    这对我来说很重要,因为我正在尝试在不同的分支中做一些样本。所以我这样做并工作:

    rake db:drop
    rake db:reset or rake db:setup
    

    【讨论】:

      【解决方案2】:

      当你创建一个迁移并运行它,并且想要创造机会时,你必须先回滚:

      $ bin/rake db:rollback STEP=1

      在这个阶段你可以删除文件或修改它并再次运行迁移_

      $ bin/rake db:迁移

      现在你删除了文件,你不能回滚。您需要做的是手动删除表或创建迁移以删除该表:

      $ bin/rails 生成迁移 DropCategoriesTable

      这将生成一个迁移文件。编辑它:

      class DropCategoriesTable < ActiveRecord::Migration
        def up
          drop_table :categories
        end
      
        def down
          raise ActiveRecord::IrreversibleMigration
        end
      end
      

      【讨论】:

        【解决方案3】:

        您是否要完全删除该表?如果是这样,简单地删除迁移文件并不能摆脱它,因为它已经迁移到您的数据库中。如果您尝试更改或删除表,则需要开始新的迁移并使用“ALTER TABLE”。我建议查看这个 stackoverflow 链接:How to delete or add column in SQLITE?

        【讨论】:

          猜你喜欢
          • 2018-10-06
          • 1970-01-01
          • 1970-01-01
          • 2017-03-01
          • 2018-02-05
          • 2014-07-16
          • 2013-09-03
          • 2011-10-07
          • 1970-01-01
          相关资源
          最近更新 更多