簡體   English   中英

“導入 ibm_db”期間出錯

[英]error during “import ibm_db”

我收到這個錯誤!

回溯(最近一次通話):文件“/home/e****/RRR/RRR_Success.py”,第 37 行,在 ? 導入 ibm_db 導入錯誤:libdb2.so.1:無法打開共享對象文件:沒有這樣的文件或目錄

請幫我解決這個問題

根據我的經驗,不需要 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/
total 24
-rw-r--r--. 1 root root  17 Feb  9  2012 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 Jun  6  2014 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 connect to dbname

   Database Connection Information

 Database server        = DB2/LINUXX8664 10.5.3
 SQL authorization ID   = DB2INST1
 Local database alias   = dbname

[db2inst1@localhost ~]$ env | grep LIBRARY
LD_LIBRARY_PATH=/home/db2inst1/sqllib/lib64:/home/db2inst1/sqllib/lib32
[db2inst1@localhost ~]$

以上錯誤表明 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

(重新)安裝ibm-db

這是我為 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變量

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM