我在我的模型上创建了一个独特的索引,如下所示:
add_index(:courses, :name, unique: true)
我不再要求名称是唯一的。我认为我和this person有同样的问题,所以我通过这些建议无济于事。
当我尝试添加具有相同名称的记录时,我收到类似“ActiveRecord :: RecordNotUnique:PG :: UniqueViolation:ERROR:重复键值违反唯一约束”index_courses_on_name“的错误。
删除我尝试的唯一约束:
remove_index :courses, :name
(迁移成功,但后来我得到同样的错误,表明仍存在唯一性限制)
execute "ALTER TABLE courses DROP CONSTRAINT unique_index_courses_on_name"
execute "ALTER TABLE courses DROP CONSTRAINT index_courses_on_name"
execute "ALTER TABLE courses DROP CONSTRAINT unique_name"
execute "ALTER TABLE courses DROP CONSTRAINT name"
execute "ALTER TABLE courses DROP INDEX index_courses_on_name"
execute "ALTER TABLE courses DROP INDEX courses_on_name"
execute "DROP INDEX unique_courses_name"
(PG :: UndefinedObject:错误:索引“unique_courses_name”不存在)
execute "ALTER TABLE courses disable CONSTRAINT unique_courses_name"
(PG :: SyntaxError:ERROR:“CONSTRAINT”或其附近的语法错误 第1行:ALTER TABLE课程禁用CONSTRAINT unique_courses_name)
execute "ALTER TABLE courses DROP INDEX unique_courses_name"
我正在使用psql 9.4.4,Rails 4.2,以及我的最后一点理智。感谢大家。
答案 0 :(得分:0)
如果删除旧索引并再次添加
,我认为将删除唯一身份class RemoveUniqueFromCoursesName < ActiveRecord::Migration
def change
remove_index(:courses, :name)
add_index(:courses, :name)
end
end