ruby-on-rails-4 - Rake db :migrate error, 表已经存在

标签 ruby-on-rails-4 sqlite dbmigrate

我不小心创建了一个不需要的迁移,所以我删除了该文件,并在尝试运行 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)

最佳答案

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

$ bin/rake db:rollback STEP=1



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

$ bin/rake db:migrate



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

$ bin/rails generate migration DropCategoriesTable



这将生成一个迁移文件。编辑它:
class DropCategoriesTable < ActiveRecord::Migration
  def up
    drop_table :categories
  end

  def down
    raise ActiveRecord::IrreversibleMigration
  end
end

关于ruby-on-rails-4 - Rake db :migrate error, 表已经存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32296380/

相关文章:

ruby - 每当 gem 每 2 秒不工作时

ruby - Rails 4.1.6 Assets 管道未在生产中加载 Assets 和 javascript

session - Rails 4 跨子域共享 session

sql - 简化SQL请求

c# - 如何在安装项目中包含和链接 Sqlite 数据库文件

ruby-on-rails - 无法运行 rake db :migrate

ruby-on-rails - 在应用它们之前,如何确定 'rake db:migrate'将应用哪些更改?

ruby-on-rails-4 - Rails 4 中的时差计算错误

android - 为 sql db 创建多个表(a-z 表)

ruby-on-rails - "heroku run rake db:migrate"命令返回 ETIMEDOUT 错误信息