【发布时间】:2016-01-10 20:22:59
【问题描述】:
我在我的模型上创建了一个唯一索引,如下所示:
add_index(:courses, :name, unique: true)
我不再要求名称是唯一的。我想我和this person有同样的问题,所以我尝试了这些建议,但无济于事。
当我尝试添加同名记录时,我收到类似“ActiveRecord::RecordNotUnique: PG::UniqueViolation: 错误:重复键值违反唯一约束“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 和我的最后一点理智。谢谢大家。
【问题讨论】:
-
显示来自
psql的表定义,例如\dt courses -
@craig - 它说在 dev 中没有找到任何关系,并且在生产中找不到数据库连接(我猜是因为它是数据库的 URL,而不是 Heroku 上的 /var)。我将调查为什么我会收到此错误,尽管它看起来工作正常。
标签: ruby-on-rails postgresql rails-migrations