通过ODBC在Heroku上的雪花

时间:2020-03-26 16:50:30

标签: ruby-on-rails heroku odbc snowflake-cloud-data-platform

更新-我通过使用Sequel和Ruby-ODBC gem以及适用于Heroku(https://elements.heroku.com/buildpacks/daasity/heroku-buildpack-snowflake-odbc)的其他构建包来使它正常工作

必须修改AptFile行

https://sfc-repo.snowflakecomputing.com/odbc/linux/2.18.3/snowflake-odbc-2.18.3.x86_64.deb

https://sfc-repo.snowflakecomputing.com/odbc/linux/latest/snowflake-odbc-2.21.0.x86_64.deb

我正在寻找帮助解决问题的建议,我试图通过Heroku上的ODBC将Rails 5.1应用程序连接到Snowflake数据库。 我尝试了各种方法,但一直遇到不同的问题。

到目前为止已采取的步骤:

  • 添加了heroku-community / apt buildpack
  • 使用以下程序包创建AptFile:

unixodbc

unixodbc-dev

https://raw.githubusercontent.com/carwow/heroku-buildpack-snowflake-odbc/master/snowflake-odbc.deb

  • 添加了odbc_adapter gem(https://github.com/localytics/odbc_adapter

  • 修改了我的database.yml文件,使其包括:snowflake连接详细信息。

  • 创建了一个新类来镜像Snowflake中保存的表,并添加了一条代码,以建立对雪花的连接和测试连接的方法。

当我在本地运行此程序时,一切运行正常。当我部署到Heroku并尝试运行相同的方法时,出现此错误:

ODBC :: Error:S1000(-1)[unixODBC] [DSI]在美国英语语言环境中找不到错误消息SFRestRequestFailed。检查/app/.apt/usr/lib/snowflake/odbc/lib/SFMessages_zh-CN.xml是否存在。

当我检查Heroku上的文件结构时,我可以看到SFMessages_en_US.xml位于不同的路径中。

我尝试使用isql -v来查看是否可以获得更多详细信息,但这会返回错误:

[28000] [unixODBC] [DSI]在美国英语语言环境中找不到错误消息DSIReqSettingNotFound。检查/app/.apt/usr/lib/snowflake/odbc/lib/ODBCMessages_zh-CN.xml是否存在。

我一直试图使其正常工作,但无法看到我卡住的潜在错误。

1 个答案:

答案 0 :(得分:0)

在安装SNFLK ODBC驱动程序之前,尝试添加以下内容(从Dockerfile复制,因此您需要进行更改以匹配Heroku):

ENV LANGUAGE=en_US.UTF-8
ENV LANG=en_US.UTF-8
ENV LC_ALL=en_US.UTF-8
RUN apt-get install locales && locale-gen