“import ibm_db”期间出错

时间:2010-09-17 10:10:44

标签: python db2

我收到此错误!

追踪(最近一次通话):   文件“/home/e****/RRR/RRR_Success.py”,第37行,在?     import ibm_db ImportError:libdb2.so.1:无法打开共享对象文件:没有这样的文件或目录

请帮我解决这个问题

4 个答案:

答案 0 :(得分:0)

(重新)安装ibm-db

答案 1 :(得分:0)

以上错误表明DB2客户端库不在LD_LIBRARY_PATH中,请在LD_LIBRARY_PATH中设置/home/../path/to/sqllib/lib。有关详细信息,您可以浏览http://www-01.ibm.com/support/knowledgecenter/SSEPGG_10.5.0/com.ibm.db2.luw.apdv.gs.doc/doc/c0006321.html?lang=en

答案 2 :(得分:0)

根据我的经验,不需要LD_LIBRARY_PATH。我在python db2 odbc驱动程序和db2服务器在同一台机器上的系统上遇到了这个问题
首先检查系统上是否只有一个libdb2.so.1文件 find / -name libdb2.so.1

如果有两个,则它们可能不同,所以请检查md5sum
[root @ localhost~] #cat /etc/ld.so.conf.d/db2-odbc.conf
的/ opt / IBM / DB2 / odbc_cli / clidriver中/ lib目录
[root @ localhost~] #ll /opt/ibm/db2/odbc_cli/clidriver/lib/libdb2.so.1
[root @ localhost~] #ll /home/db2inst1/sqllib/lib64/libdb2.so.1
-r-xr-xr-x 1 bin bin 42685547 Dec 15 08:49 /home/db2inst1/sqllib/lib64/libdb2.so.1

[root @ localhost~] #md5sum /home/db2inst1/sqllib/lib64/libdb2.so.1
ffca929b98201e3934e9625d1480890f /home/db2inst1/sqllib/lib64/libdb2.so.1
[root @ localhost~] #md5sum /opt/ibm/db2/odbc_cli/clidriver/lib/libdb2.so.1
a1247f1582eb1bd2fc248b3901812951 /opt/ibm/db2/odbc_cli/clidriver/lib/libdb2.so.1
[root @ localhost~]#


文件不同,您可以通过修改ldconfig来控制链接的文件 [root @ localhost~] #ll /etc/ld.so.conf.d/
共24 -rw-R - R--。 1 root root 17 2012年2月9日atlas-x86_64.conf
-rw-r - r-- 1 root root 28 Dec 15 08:50 db2.conf
-rw-r - r-- 1 root root 36 Dec 15 09:07 db2-odbc.conf
-r - R的 - R--。 1 root root 324 2014年6月6日kernel-2.6.32-431.20.3.el6.x86_64.conf
-rw-R - R--。 1 root root 17 Feb 3 2014 mysql-x86_64.conf
-rw-R - R--。 1 root root 22 Jul 18 2011 qt-x86_64.conf
[root @ localhost~]#

我从这个文件夹中删除了db2.conf文件,并运行了ldconfig,然后它开始工作。

[root @ localhost~] #mv /etc/ld.so.conf.d/db2.conf mahesh /
[root @ localhost~] #ldconfig


请注意,db2inst1中的db2客户端仍然有效,这是设置LD_LIBRARY_PATH的位置
[root @ localhost~]#su - db2inst1
[db2inst1 @ localhost~] $ db2连接到dbname

   数据库连接信息

 数据库服务器= DB2 / LINUXX8664 10.5.3
 SQL授权ID = DB2INST1
 本地数据库别名= dbname

[db2inst1 @ localhost~] $ env | grep LIBRARY
LD_LIBRARY_PATH = /家庭/ DB2INST1 / SQLLIB / lib64目录:/家庭/ DB2INST1 / SQLLIB / LIB32
[db2inst1 @ localhost~] $

答案 3 :(得分:0)

这是我对docker映像所做的:

WORKDIR /home/db2_cli_odbc_driver
RUN apt-get update && \
    apt-get --assume-yes install \
       wget && \
    wget https://public.dhe.ibm.com/ibmdl/export/pub/software/data/db2/drivers/odbc_cli/linuxx64_odbc_cli.tar.gz -O odbc_cli.tar.gz && \
    tar -xvf odbc_cli.tar.gz && rm odbc_cli.tar.gz && \
    echo /home/db2_cli_odbc_driver/clidriver/lib > /etc/ld.so.conf.d/db2.conf && \
    ldconfig && \
    apt-get purge -y --auto-remove wget && \
    apt-get clean && \
    rm -rf /var/lib/apt/lists/*
ENV IBM_DB_HOME=/home/db2_cli_odbc_driver/clidriver

按顺序,

  • 下载驱动程序
  • 打开包装
  • 创建一个指向目标文件夹的/etc/ld.so.conf.d/db2.conf文件
  • 运行ldconfig
  • 在安装python软件包之前设置IBM_DB_HOME变量