当前位置: 代码迷 >> DB2 >> odbc isql db2: 0509-103 The module has an invalid magic number,该如何处理
  详细解决方案

odbc isql db2: 0509-103 The module has an invalid magic number,该如何处理

热度:4216   发布时间:2013-02-26 00:00:00.0
odbc isql db2: 0509-103 The module has an invalid magic number
环境:AIX 64位

LIBPATH=/export/home/unixuser/sqllib/lib64:/usr/lib:/lib:/export/home/oracle/11.1.0.6_client/lib:/home/eng-sm/unixuser/claire/test/perl/unixodbc_install/lib

Q20F是一个DB2数据库,我在执行unixODBC isql时出现下面错误
unixuser\@dsliaa05 # > ./isql -v Q20F
[01000][unixODBC][Driver Manager]Can't open lib '/export/home/unixuser/sqllib/lib64/libdb2.a' :         0509-022 Cannot load module /export/home/unixuser/sqllib/lib64/libdb2.a.
        0509-103   The module has an invalid magic number.
[ISQL]ERROR: Could not SQLConnect

我看网上也有类似错误,他们通过修改环境变量LIBPATH,将它指向64位lib库即可。我的LIBPATH已经是执行64位lib了,不知道为什么还不行。


------解决方案--------------------------------------------------------
有人知道吗?
------解决方案--------------------------------------------------------
一般从既有系统移植时,会因为编译出来的程序是32位,而动态库是64位的,刚才遇到这种情况。
可以用 file 命令查看程序是否64位

两种解决方法:
1.在 cc 编译参数增加 -q64 编译成64位的程序。
2.如果数据库有32位动态库的话,在.profile中增加:
  LIBPATH=$ORACLE_HOME/.../lib32
  LD_LIBRARY_PATH=$ORACLE_HOME/.../lib32
  程序需要的其它数据库动态库由 lib 指向 lib32
  相关解决方案