Drop_table问题阻止了rake db:migrate

tva*_*nt2 2 rake ruby-on-rails drop-table ruby-on-rails-3

我正在寻找一种方法来删除Rails中的表并重新开始并遇到了这样的答案:Rails数据库迁移 - 如何删除表?

但是,当我运行时,drop_table :examples我收到以下错误:

-bash: drop_table: command not found
Run Code Online (Sandbox Code Playgroud)

这是我的create_examples迁移文件:

def self.down
  drop_table :examples
end
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮助指导我解决这个问题并让我了解我做错了什么吗?我需要修复它,因为此特定迁移阻止执行rake db:migrate,生成以下错误:

==  CreateExamples: migrating ====================================================
-- create_table(:examples)
rake aborted!
An error has occurred, this and all later migrations canceled:

SQLite3::SQLException: table "examples" already exists: CREATE TABLE "examples" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "content" varchar(255), "user_id" integer, "created_at" datetime, "updated_at" datetime) 
Run Code Online (Sandbox Code Playgroud)

谢谢!(如果我需要提供更多代码,请告诉我.)

mu *_*ort 7

您应该在创建新版本之前删除旧表:

def self.up
    drop_table :examples
    create_table :examples do |t|
        #...
    end
end
Run Code Online (Sandbox Code Playgroud)

由于你无法真正扭转这一点drop_table,你可能想在回滚中引发一个异常:

def self.down
    raise ActiveRecord::IrreversibleMigration
end
Run Code Online (Sandbox Code Playgroud)

或许你只想保持现状self.down.