我之前从未使用过db,所以这对我来说都是新手。我在RubyMine,Rails 3工作。
SQLite3 :: SQLException:表“projects”已经存在:CREATE TABLE“projects”(“id”INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,“partner_id”integer,“name”varchar(255))
事实上,如果您按预期查看名为"20120531031320_projects.rb"
的文件,它会尝试创建项目表:
def up
create_table :projects do |table|
table.integer :partner_id
table.string :name
end
add_index :projects, :name
end
这个项目是从Sinatra移植的,也许数据库和迁移文件不同步(如果这是正确的术语)。无论如何,有没有办法在这些迁移文件和数据库之间进行同步,以便我可以使用新的迁移文件向数据库添加新表?
答案 0 :(得分:1)
我通过在迁移中添加条件来解决这个问题,以查看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