如果你运行:
strings $INFORMIXDIR/lib/cli/libifdmr.so | grep _OdbcSetTrace
你能看到任何参考资料吗?如果没有,则该库没有支持功能。如果您确实看到了这一点,那么概述的机制应该可以工作。如果没有,您可能有一个可报告的错误。
您试图追踪问题的级别是什么?而且,既然 unixODBC 有效,为什么不使用有效的驱动程序管理器呢?
我从 $INFORMIXDIR/demo/cli 中获取了示例 distsel.c,并使用 CSDK 3.50.FC3 在 Solaris 10 上对其进行了编译。我已经到了连接成功的地步,但是我正在使用的数据库中缺少表“项目”,因此程序停止了 SQLExecDirect()。当我在“truss”(相当于 Linux 上的“strace”)下运行它时,即使尝试打开跟踪文件,我也看不到代码的证据。
我编译使用:
gcc -I$INFORMIXDIR/incl/cli distsel.c -DNO_WIN32 \
-L$INFORMIXDIR/lib/cli -lifdmr -lifcli -o distsel
我使用了以下 .odbc.ini 文件:
;
; odbc.ini
;
[ODBC Data Sources]
odbc_demo = IDS 11.50.FC3 stores on black
[ODBC]
Trace = yes
TraceFile = /tmp/odbc.trace
[odbc_demo]
Driver = /usr/informix/11.50.FC1/lib/cli/libifcli.so
Description = IBM Informix CLI 3.50
Server = black_19
FetchBufferSize = 99
UserName = jleffler
Password = XXXXXXXX
Database = stores
ServerOptions =
ConnectOptions =
Options =
ReadOnly = no
和这个:
;
; odbc.ini
;
[ODBC Data Sources]
odbc_demo = IDS 11.50.FC3 stores on black
[odbc_demo]
Driver = /usr/informix/11.50.FC1/lib/cli/libifcli.so
Description = IBM Informix CLI 3.50
Server = black_19
FetchBufferSize = 99
UserName = jleffler
Password = XXXXXXXX
Database = stores
ServerOptions =
ConnectOptions =
Options =
ReadOnly = no
Trace = yes
TraceFile = /tmp/odbc.trace
因此,我相信您发现了一个错误。我不确定该错误是在您引用的常见问题解答中还是在产品中 - 我倾向于认为是后者。您应该将此问题报告给 IBM 技术支持。(我没有检查过 Informix CLI (ODBC) 手册;在尝试提交产品错误之前可能值得检查一下;如果手册表明 Trace 不起作用,或者如果它没有表明它起作用工作,那么您列出的常见问题解答页面中有一个错误。)
如果您要查看 SQL 数据,FAQ 中的 SQLIDEBUG 部分有效:
SQLIDEBUG=2:distsel ./distsel
这为我生成了一个文件 distsel_6004_0_102d40 - 它对你来说会有所不同。然后,您可以使用“sqliprint”实用程序查看客户端和服务器之间的数据流动。
如果您找不到“sqliprint”,请回复我。