Ruby on rails 如何在rails迁移中反转Postgresql唯一索引约束?
我在模型上创建了一个唯一索引,如下所示:Ruby on rails 如何在rails迁移中反转Postgresql唯一索引约束?,ruby-on-rails,postgresql,rails-migrations,Ruby On Rails,Postgresql,Rails Migrations,我在模型上创建了一个唯一索引,如下所示: 添加索引(:courses,:name,unique:true) 我不再要求名称是唯一的。我想我也有同样的问题,所以我仔细研究了这些建议,但没有结果 当我尝试添加具有相同名称的记录时,会收到类似“ActiveRecord::RecordNotUnique:PG::UniqueViolation:错误:重复键值违反唯一约束”的错误 要删除我尝试过的唯一约束,请执行以下操作: remove\u索引:课程:名称 (迁移成功,但后来我收到相同的错误,表明仍然存在
添加索引(:courses,:name,unique:true)
我不再要求名称是唯一的。我想我也有同样的问题,所以我仔细研究了这些建议,但没有结果
当我尝试添加具有相同名称的记录时,会收到类似“ActiveRecord::RecordNotUnique:PG::UniqueViolation:错误:重复键值违反唯一约束”的错误
要删除我尝试过的唯一约束,请执行以下操作:
remove\u索引:课程:名称
(迁移成功,但后来我收到相同的错误,表明仍然存在唯一性约束)
在名称上执行“更改表格课程删除约束唯一索引课程”
执行“ALTER TABLE COURES DROP CONSTRAINT index\u COURES\u on\u name”
执行“更改表课程删除约束唯一名称”
执行“更改表课程删除约束名称”
在名称上执行“更改表格课程放置索引课程”
执行“更改表格课程在名称上删除索引课程”
执行“删除索引唯一\u课程\u名称”
execute“ALTER TABLE courses disable CONSTRAINT unique\u courses\u name”
执行“ALTER TABLE COURCES DROP INDEX unique\u COURCES\u name”
我使用的是psql 9.4.4、Rails 4.2和我的最后一点理智。谢谢大家。如果删除旧索引并再次添加,我认为unique将被删除
class RemoveUniqueFromCoursesName < ActiveRecord::Migration
def change
remove_index(:courses, :name)
add_index(:courses, :name)
end
end
class RemoveUniqueFromCoursesName
显示来自psql
的表定义,例如\dt courses
@craig-它表示在dev中找不到任何关系,在生产中也找不到数据库连接(我猜是因为它是指向数据库的URL,而不是Heroku上的/var中)。我将调查为什么会出现此错误,尽管它看起来工作正常。我同意这应该可以工作,就像我在迁移运行上的尝试一样,但db约束仍然存在,阻止我添加具有重复名称的记录。我认为错误在我的配置中更深,这只是症状。