连接到DB2数据库:[unixODBC][Driver Manager]Driver';SQL\u句柄\u HENV上的s SQLAllocHandle失败

连接到DB2数据库:[unixODBC][Driver Manager]Driver';SQL\u句柄\u HENV上的s SQLAllocHandle失败,db2,odbc,unixodbc,Db2,Odbc,Unixodbc,odbc.ini: [DEFAULT] Driver = DB2 [abc] Driver = DB2 [dsn_test1] DESCRIPTION = Connection to DB2 Driver = db2 odbcinst.ini: [DB2] Description = DB2 Driver Driver = /home/user/sqllib/lib/libdb2.so fileusage=1 dontdlclose=1

odbc.ini:

[DEFAULT]
Driver          = DB2
[abc]
Driver          = DB2
[dsn_test1]
DESCRIPTION = Connection to DB2
Driver          = db2
odbcinst.ini:

[DB2]
Description = DB2 Driver
Driver = /home/user/sqllib/lib/libdb2.so
fileusage=1
dontdlclose=1

[ODBC]
Trace=1
TraceFile=/home/user/sqllib/trace.out
db2cli.ini

[abc]
hostname="hostname"
pwd="passwd"
port="port"
PROTOCOL=TCPIP
database="dbname"
uid="uid"
美元/isql abc

+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+
从db2驱动程序连接时,出现以下错误:

Connection attempt for data source name "abc":
===============================================================================
ODBC Driver Manager Path: /home/user/sqllib/odbclib/lib/libodbc.so

[FAILED]: [unixODBC][Driver Manager]Driver's SQLAllocHandle on SQL_HANDLE_HENV 
failed
以下是odbc跟踪的片段:

[ODBC][23419][1403783774.660159][SQLConnect.c][1380]Error: IM004
[ODBC][23419][1403783774.660223][SQLError.c][434]
    Entry:
        Connection = 0x81aaac8
        SQLState = 0xffff9593
        Native = 0xffff9684
        Message Text = 0xffff8d93
        Buffer Length = 1024
        Text Len Ptr = 0xffff95bc
[ODBC][23419][1403783774.660260][SQLError.c][471]
    Exit:[SQL_SUCCESS]
        SQLState = IM004
        Native = 0xffff9684 -> 0
        Message Text = [[unixODBC][Driver Manager]Driver's SQLAllocHandle on SQL_HANDLE_HENV failed]
谷歌搜索了很多根本原因,力帮助很大,请提供一些解决这个问题的指针。 它是一台32位linux机器,也有32位db驱动程序。

根据这一点,SQLAllocHandle上的IM004 SQLState与新的安全功能相关

原因 DB2®Universal Database中引入的新安全特性™ (DB2) UDB)版本8.2禁止用户使用数据库,除非 属于Windows®组DB2ADMNS或DB2USERS

答复 将用户ID(用于执行应用程序的用户ID)添加到 DB2ADMNS或DB2USERS组。请参阅“相关”下的链接 有关如何完成此操作的说明,请参阅下文中的“信息”

或者,有许多线程(例如)建议将
DB2INSTANCE
环境变量设置为与相关DSN的
odbc.ini
文件中的实例设置相匹配,例如

export DB2INSTANCE=db2inst1
isql -v FS01DB2

您好,谢谢您的回复,忘了提到它的linux32位机器和无实例客户端。在这种情况下,DB2INSTANCE将无效。您是否尝试过查看他们的网站,以获取有关从源代码构建(然后能够修改)的说明。已经有一段时间了,但我以前在使用ODBC驱动程序时就这样做了。export CC=gcc export CFLAGS=“-maix64-q64-DBUILD\u REAL\u 64\u BIT\u MODE”export OBJECT\u MODE=64,在Linux上查看后调试编辑您的问题以回答(1)什么是Linux发行版和版本详细信息(2)安装的Db2驱动程序名称和类型,特别是它的版本,fixpack(3)详细说明了“从Db2驱动程序连接”的含义,显示了确切的命令行(如果使用)或源代码。(4) 详细说明涉及的帐户,即哪个帐户安装了Db2驱动程序,哪个帐户试图通过哪个方法连接。我在odbcinst配置中启用了跟踪,但跟踪显示在哪里?