ODBCManageDataSourcesQ4、ODBCCreateDataSourceQ4 找不到 ODBCINSTGetProperties()

ODBCManageDataSourcesQ4, ODBCCreateDataSourceQ4 Could not find ODBCINSTGetProperties()

ODBCManageDataSourcesQ4、ODBCCreateDataSourceQ4 找不到 ODBCINSTGetProperties()

ubuntu 16.04.2 x64 unixODBC 2.3.4 使用 apt-get 安装安装了 unixodbc 和 unixpdbc-dev 包。 ODBCManageDataSourcesQ4 和 ODBCCreateDataSourceQ4 (unixODBC-Gui-Qt 1.0.1)

我手动编辑了 /etc/odbcinst.ini 和 /etc/odbc.ini 来为我的 DB2 环境添加驱动程序和系统 DSN 详细信息。 我正在将 unixODBC 连接到 DB2,这可以成功地与 isql 一起使用。 因此,我可以在 Linux 上的命令行成功连接到系统 DSN 和 运行 SQL 语句以使用 Db2。

我的问题与 GUI 有关:ODBCManageDataSourcesQ4 和 ODBCCreateDataSourceQ4,它们报告 "Could not find ODBCINSTGetProperties()"

ODBCManageDataSourcesQ4 和 ODBCCreateDataSourceQ4 都显示已注册的 DB2 驱动程序,但它们无法配置它,因为 odbcinst.ini SETUP 行库似乎没有 ODBCINSTGetProperties() 方法。

/etc/odbcinst.ini 有:

[DB2]
Description = IBM DB2 Driver
Driver = /opt/ibm/db2/V11.1.2.2/lib64/libdb2.so.1
Setup = /opt/ibm/db2/V11.1.2.2/lib64/libdb2cfg.so.1
FileUsage = 1
DontDLClose = 1

[ODBC]
Trace=Yes
TraceFile=/tmp/unixodbc.trc.log
Pooling=No

我搜索了 /opt/ibm/db2/V11.1.2.2/lib64 中的所有文件,但没有找到任何提到 ODBCINSTGetProperties() 的文件,所以我的问题是这是否必须由外部提供(例如由某人编写) ,或者 unixODBC 是否期望它由驱动程序(在本例中为 IBM DB2 数据服务器驱动程序)提供。

在 sourceforge 的快照中检查了源代码。 从文件 odbcinstQ4/CDataSourceNamesFileModel.cpp 中读取:

  • This relies upon the selected driver having a viable setup library. By * viable we mean that it implements ODBCINSTGetProperties.

所以答案好像是IBM没有在Db2驱动中提供相关的hook来让GUI工具ODBCManageDataSourcesQ4、ODBCCreateDataSourceQ4运行。有必要通过文本文件而不是使用 GUI 配置驱动程序。