Rails 3迁移错误:SQLite3 :: SQLException:表“myTable”已经存在:
问题描述:
我以前从来没有使用db,所以这对我来说都是新的。我正在RubyMine,Rails 3中工作。Rails 3迁移错误:SQLite3 :: SQLException:表“myTable”已经存在:
- 首先,什么是迁移,为什么?我不能只通过数据库浏览器编辑数据库吗?迁移是否保留我的数据或其他内容?
- 其次,我继承了一个项目,迁移文件夹中有3个文件,其名称为20120128022506_users.rb。如果我只是运行迁移任务,我得到:
SQLite3::SQLException: table "projects" already exists: CREATE TABLE "projects" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "partner_id" integer, "name" varchar(255))
而事实上,如果你叫"20120531031320_projects.rb"
的文件,如预期看,它正在努力使一个项目表:
该项目已从Sinatra移植过来,也许db和迁移文件不同步(如果这是正确的术语)。无论如何,是否有办法在这些迁移文件和数据库之间进行同步,以便我可以使用新迁移文件向数据库添加新表?
答
我解决了这个通过把有条件的迁移,看看是否“项目”中的分贝存在:
def up
if (!ActiveRecord::Base.connection.tables.include?("projects"))
create_table :projects do |table|
table.integer :partner_id
table.string :name
end
end
end
+0
如果遇到这个问题,这是一个很好的习惯吗?不知道这是否会在以后的屁股咬我。 – andy4thehuynh 2014-04-16 17:39:29
这可能是一个良好的开端 - http://guides.rubyonrails.org/ migrations.html – house9 2012-07-14 20:28:00
此外,rails会跟踪它创建的schema_migrations表中执行了哪些迁移 – house9 2012-07-14 20:32:48
感谢house9,这让我走了! – dt1000 2012-07-14 23:19:24