当我尝试创建位置感知的新 field 时,出现以下错误。
ActiveRecord::StatementInvalid: PG::Error: ERROR: new row for relation "venues" violates check constraint "enforce_srid_latlon"
这是我重现错误的方法。
v = Venue.create(:latlon => "POINT (43.245332 -85.4352332)")
v.save
我确实注意到,在迁移中,我没有为 t.point :latlon 设置 :geographic => true 属性。这可能就是导致我出现问题的原因吗?如果是这样,如何在已包含数据的列上将该标志设置为 true?
最佳答案
正如(Postgres)错误消息告诉您的那样,新行将违反检查约束enforce_srid_latlon
。
看看检查约束的定义,你就会得到答案。 在psql中,您可以使用:
\d venues
或者您可以从任何客户端使用此SQL 查询:
SELECT r.conname, pg_catalog.pg_get_constraintdef(r.oid, true)
FROM pg_catalog.pg_constraint r
WHERE r.conrelid = 'venues'::regclass
AND r.contype = 'c'
ORDER BY 1;
或者您可以使用类似 pgAdmin 的 GUI .
关于ruby-on-rails - 关系 "venues"的新行违反了检查约束 "enforce_srid_latlon",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11439850/