2012-02-24 49 views
1

我想使用CLSQL從SBCL連接到MySQL。我使用quicklisp(ql:quickload'clsql)加載CLSQL。但是,在調用(clsql:connect'(...):database-type:mysql)時,它說:CentOS安裝中的CLSQL

無法加載外部庫「libmysqlclient」,「libmysql」。 (搜索CLSQL-SYS:FOREIGN-LIBRARY-SEARCH-PATHS)。

我在CentOS,基本上就是我想要做的就是

  1. 使用yum安裝mysql客戶端的開發頭文件,所以UFFI可以找到它(我沒有這樣做)
  2. 安裝後,能夠連接到本地MySQL服務器(我認爲1.完成後,它可以自動工作)。

我目前使用:

  • 的CentOS 5.7決賽(32位)
  • SBCL 1.0.55
  • Quicklisp測試
  • 百勝庫:基地,EPEL,演員,更新

我並沒有問及如何在CentOS上安裝MySQL開發標題,因爲那個wou ld只解決了我的一部分問題,我仍然需要知道我的機器中缺少什麼。我也沒有嘗試從源代碼構建libmysqlclient/libmysql,因爲我不知道clsql是否能夠找到它。我想不是。

我真的很抱歉,如果我的問題不知何故錯過了這一點,但廣泛的谷歌搜索沒有產生任何結果。如果有人告訴我他們不能在CentOS上安裝MySQL客戶端開發頭文件,我會嘲笑他們,並告訴他們使用yum搜索,但是我沒有在yum上找到它。

我知道ubuntu(和debian)的解決方案,因爲有一個cl-sql包,我也可以很容易地在那裏找到mysql頭文件,但我在CentOS上需要它。

在此先感謝。

回答

1

不知何故,當你嘗試的東西足夠長的時間,它會得到完成;)

這裏就是我所做的,如果有人需要就這個問題的答案,並絆倒:

(ql:quickload 'clsql) 

;tell clsql where to search for mysql libs 
(push #P"/usr/lib/mysql" CLSQL-SYS:*FOREIGN-LIBRARY-SEARCH-PATHS*) 

;add mysql libs to clsql library path [apparent from code :] 
(clsql:push-library-path "/usr/lib/mysql/") 

;directly tell uffi to load mysqlclient shared library 
(uffi:load-foreign-library "/usr/lib/mysql/libmysqlclient.so") 

當然,你可以如果需要,用mysql庫的不同路徑替換「/ usr/lib/mysql」。

+0

我不確定自2012年以來代碼是如何改變的,但今天(2016年)您包含單詞'push'的行都做同樣的事情。所以''/ usr/lib/mysql''在列表中結束兩次。 – daveloyall 2016-07-15 18:29:32

+0

另外,pathspec'#P「/ usr/lib/mysql」'和字符串'「/ usr/lib/mysql」之間有一些區別。 – daveloyall 2016-07-15 18:30:16

+1

我記得我這樣做是爲了讓它在不同的系統上工作(使用#'push is redundant)。不同系統甚至同一系統的不同版本的CLSQL安裝問題讓我感到厭倦,我很久以前就轉向Postgres和後現代,這很容易,可以直接在TCP/IP上使用(不使用UFFI或CFFI) ),坦率地說,有更好的使用體驗。由於它是一個ORDBMS,它很好地集成到CLOS中。 – 2016-07-18 06:48:02