ruby-on-rails - 关系 "venues"的新行违反了检查约束 "enforce_srid_latlon"

标签 ruby-on-rails ruby-on-rails-3 postgresql postgis

当我尝试创建位置感知的新 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/

相关文章:

ruby-on-rails - 我应该如何升级 Rails 应用程序以使用最新版本的 Rails

ruby-on-rails - 我应该联合索引 ActiveRecord 多态关联吗?

ruby-on-rails - 如何使用 Cucumber-Capybara 断言 flash 变量为零?

c++ - 难以理解协议(protocol)定义

使用数组输入和数组输出为 PostgreSQL 创建简单的 C 函数

ruby-on-rails - 由于关联模型的验证,Rspec 应该对 ActiveRecord 模型进行匹配器测试失败

ruby-on-rails - 在 rails TestCase 中检查正则表达式

ruby-on-rails-3 - 编写 Mechanize 的缓存版本

ruby - 如何对命名空间中的模型执行 has_many

sql - 错误 : operator does not exist: integer == integer