1. 程式人生 > 資料庫 >OmniDB 連線 ORACLE 報錯提示DP-1047:Cannot locate a 32-bit Oracle Client library

OmniDB 連線 ORACLE 報錯提示DP-1047:Cannot locate a 32-bit Oracle Client library

使用 OmniDB 軟體 連線Oracle資料庫時 ,報錯 Cannot locate a 32-bit Oracle Client library ;

在網上檢視說這是由於Oracle客戶端instanceclient, 系統, Python 三者版本位數不對應。

解決過程

  1. 首先檢視資料庫服務端的版本:
    SELECT * FROM V$VERSION
    在這裡插入圖片描述
    查詢結果是64位

  2. 檢視python版本:
    在這裡插入圖片描述
    也是64位;
    按理說Oracle客戶端instanceclient不匹配的話應該要報錯
    Cannot locate a 64-bit Oracle Client library
    64位才對,而不是32位

  3. 先到Oracle client官網下載 instantclient-basic-windows.x64-12.2.0.1.0.zip 12版本的64位客戶端檔案,把Oracle服務端下的oci.dll檔案替換為下載的壓縮包中的,然而還是報錯(其中重啟了軟體和資料庫也沒用);

  4. 沒辦法,只能先抱著試一試的心態下載32位的客戶端檔案,並再次替換資料庫中的oci.dll,結果這次連啟動Oracle也不行了。

  5. 再次檢視網上的解決方案,其中說到需要配置客戶端的環境變數;因為資料庫就安裝在本機,我是沒有配置的,鑑於之前的報錯問題為32bit,還是把32位的客戶端檔案路徑配置上去。如下:
    將客戶端的檔案路徑放於服務端之前,避免又讀到服務端64位的oci.dll。

在這裡插入圖片描述

重啟系統後,連線未報錯。

後續:

之前困惑於這個報錯提示,DP-1047:Cannot locate a 32-bit Oracle Client librarypythonCx_oracle包連線時的錯誤,為什麼用這個軟體連線會有。

後面看到軟體安裝路徑下全是python檔案,這才意識到OmniDB 是 python寫的,所以。。
在這裡插入圖片描述