沉默“未知 OID 17227:无法识别‘地理’类型。它将被视为字符串。”

问题描述 投票:0回答:3

我正在为一些“多边形内的点”查询使用“地理”类型的列。它们太少太简单,无法捆绑 GIS gem,我在 SQL 级别处理所有这些。

但是,每次 Rails 启动(rake 任务、控制台等)时,都会发出以下警告:

unknown OID 17227: failed to recognize type of 'geography'. It will be treated as String.

我对“地理”被视为“字符串”很好,但是每次 cronjob 执行任何 rake 任务时警告都会触发警告邮件。

知道如何让这个警告消失吗?

感谢您的提示!

postgresql ruby-on-rails-5 pg
3个回答
1
投票

查看ActiveRecord的源码,我可以自己回答问题:

警告是硬编码的,因此不能通过 AR 配置消除。然而,

RUBYOPT=-W0
完全摆脱了警告。这当然是一个很大的斩波器,但由于我仍然在本地开发中收到这些警告,我可以接受一个完全没有警告的生产系统。


1
投票

由于这是出现的第一个问题/答案,因为标题是错误的,所以我建议按照这个答案来修复它:What is the source of "unknown OID" errors in Rails?


0
投票

查看在 Rails 控制台中执行的这个 postgresql 语句:

ActiveRecord::Base.connection.exec_query(
  <<-SQL.squish
    SELECT websearch_to_tsquery('simple', 'james m') AS some_named_value
  SQL
).to_a.first['some_named_value']

运行时会在控制台显示这个错误:

unknown OID 3615: failed to recognize type of 'some_named_value'. It will be treated as String.

tsquery
的数据类型转换为
text
的数据类型可以消除这种情况下的错误。我假设你做了类似的事情!

ActiveRecord::Base.connection.exec_query(
  <<-SQL.squish
    SELECT websearch_to_tsquery('simple', 'james m')::text AS some_named_value
  SQL
).to_a.first['some_named_value']
© www.soinside.com 2019 - 2024. All rights reserved.