雪花 Ruby odbc 断言失败:GEOGRAPHY_type_unsupported

问题描述

按照推荐使用 ODBC 连接器将雪花连接到 rails 应用程序: https://community.snowflake.com/s/article/Ruby-Connectivity-Options-for-Snowflake

而且,由于 rails odbc 连接器已经过时且不再维护,我使用了一个修补过的连接器: https://github.com/Singlespot/odbc_adapter

不幸的是,有几天,我无法再使用我的活动记录模型进行查询。我总是得到:

ODBC::Error: S1000 (6) [SNowflake][SNowflake] (6)
  Assertion failure: GEOGRAPHY_type_unsupported

from /home/gg/.rvm/gems/ruby-2.7.2/bundler/gems/odbc_adapter-44dad924c0de/lib/odbc_adapter/schema_statements.rb:63:in `fetch_all'

即使运行 SNowflake.connection.exec('select 1')

雪花模型是:

class SNowflake < ActiveRecord::Base
  connects_to database: { writing: :sNowflake,reading: :sNowflake }
end

数据库连接是:

sNowflake:
  adapter: odbc
  conn_str: "...."

解决方法

关闭循环:问题由 Snowflake 支持处理,似乎是由 Snowflake ODBC 驱动程序中的错误引起的,当帐户中的任何表中存在 GEOGRAPHY 类型列时触发。修复正在进行中,并将在 Snowflake ODBC 驱动程序的未来版本中提供。任何感兴趣的人 - 请关注ODBC release notes

edit @ APR30 2021:Snowflake ODBC 驱动程序的固定版本 (2.23.2) 可供下载。