2010-08-27 193 views
3

我正在做一些練習clsql。我想連接我的oracle服務器,因此我的連接功能是;clsql連接oracle數據庫

(connect '("192.168.2.3" "xe" "username" "password") :database-type :oracle)

當我打回,以下錯誤消息出現。

Couldn't load foreign libraries "libclntsh", "oci". (searched *FOREIGN-LIBRARY-SEARCH-PATHS*) [Condition of type SIMPLE-ERROR]

我已經安裝了oracle-instantclient11.2-basic-11.2.0.1.0-1.i386.rpm

,並定義export LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client/lib

那麼,還有什麼應該怎麼做來連接服務器?

+0

什麼操作系統?什麼是Lisp編譯器? CLSQL如何安裝(asdf-install,clbuild等)? – Ken 2010-08-28 15:28:40

+0

當我無法連接到MySQL時,部分問題是字長問題:操作系統,Lisp和MySQL庫是32位和64位的混合。 (我從來沒有完全工作,但解決這個問題至少導致它在以後的過程中失敗!) – Ken 2010-08-28 15:29:47

+0

我使用的是linux(fedora 13),我的lisp解釋器是sbcl,我通過clbuild安裝了clsql。我也有類似的錯誤與MySQL。 – haluk 2010-08-29 01:22:18

回答

0

有一件事讓我動態鏈接到Oracle庫(在C/C++中),事實上libclntsh.so共享對象帶有之後的這個名字。因此,您可能需要在同一個目錄中創建一個軟鏈接,確保軟鏈接名稱只是libclntsh.so

0

我最近在和oracle玩,發現你需要的是將路徑libclntsh放到/etc/ld.conf.d/oracle.conf

我的設置是以下(紅帽,CentOS的 - 作爲root):從Oracle下載

oracle-instantclient12.1-basic-12.1.0.2.0-1.x86_64.rpm 
oracle-instantclient12.1-devel-12.1.0.2.0-1.x86_64.rpm 
install via rpm -ivh oracle*.rpm 

創建文件/etc/ld.so.conf.d/oracle.conf

/usr/lib/oracle/12.1/client64/lib

然後執行ldconfig

現在,作爲clsql-oraclequicklisp,我下載並提取clsql-6.6.2,然後

(require "asdf") 
(push #P"/opt/jeff/clsql-6.6.2/" asdf:*central-registry*) 
(asdf:load-system :clsql-oracle) 
(defparameter *some-db* (connect '("127.0.0.1:1521/db1" "SOME_USER_RO" "*******") :database-type :oracle)) 

,瞧,它的工作原理