我之前已经在Ubuntu 20(Focal(上成功安装了Snowflake ODBC驱动程序,它运行良好。在新的Ubuntu22(Jammy(系统上安装了相同的软件包后,Snowflake ODBC驱动程序拒绝连接,并出现以下错误:
$ isql -v snowflake-dev <redacted> <redacted>
[S1000][unixODBC][Snowflake][ODBC] (11560) Unable to locate SQLGetPrivateProfileString function.
[ISQL]ERROR: Could not SQLConnect
同样的命令在Ubuntu 20上运行良好。
以下是我的配置文件的相关部分(当然在两个系统上是相同的(:
/etc/odbc.ini:
[snowflake-dev]
Description=SnowflakeDB
Driver=SnowflakeDSIIDriver
Locale=en-US
SERVER=<redacted>.east-us-2.azure.snowflakecomputing.com
PORT=443
SSL=on
ACCOUNT=<redacted>
/etc/odbcinst.ini:
[SnowflakeDSIIDriver]
APILevel=1
ConnectFunctions=YYY
Description=Snowflake DSII
Driver=/usr/lib/snowflake/odbc/lib/libSnowflake.so
DriverODBCVer=03.52
SQLLevel=1
UsageCount=1
并且驱动程序文件确实存在于该目录中:
$ ls -l /usr/lib/snowflake/odbc/lib/libSnowflake.so*
-rwxr-xr-x 1 root root 177405464 Aug 1 15:14 /usr/lib/snowflake/odbc/lib/libSnowflake.so
$ file /usr/lib/snowflake/odbc/lib/libSnowflake.so*
/usr/lib/snowflake/odbc/lib/libSnowflake.so: ELF 64-bit LSB shared object, x86-64, version 1 (GNU/Linux), dynamically linked, BuildID[sha1]=61282db74b8db4d446540d7f53458245a6ef6997, with debug_info, not stripped
我是不是错过了一些重要的东西?Ubuntu22上有没有以前没有的新需求?
我发现文件/usr/lib/x86_64-linux-gnu/libodbcinst.so.1
在我的系统中不存在。我将文件<snowflake path>/lib/simba.snowflake.ini
改为指向/usr/lib/x86_64-linux-gnu/libodbcinst.so.2
,现在它可以工作了。