2012-06-27 27 views
3

我在嘗試使clojure連接到mysql,但不知何故失敗。 我project.clj是:不能在clojure裏面使用jdbc

(defproject my-project "0.1.0-SNAPSHOT" 
    :description "FIXME: write description" 
    :url "http://example.com/FIXME" 
    :license {:name "Eclipse Public License" 
    :url "http://www.eclipse.org/legal/epl-v10.html"} 
    :dependencies [[org.clojure/clojure "1.3.0"] 
       [org.clojure/java.jdbc "0.2.3"]] 
    :jvm-opts ["-Djdbc.drivers=com.mysql.jdbc.Driver"]) 

我的文件是:

(ns my-project 
    (:require [clojure.java.jdbc :as sql])) 


(def db {:classname "com.mysql.jdbc.Driver" 
     :subprotocol "mysql" 
     :subname "//localhost:3306/db" 
     :user "xxx" 
     :password "xxx"}) 

,我試圖運行從REPL如下:

(sql/with-connection db (sql/with-query-results rows "show tables;")) 

我得到的錯誤是:

No suitable driver found for jdbc:mysql://localhost:3306/db 

我在SQL中有一個名爲db的數據庫,我確保mysql.server在端口3306上運行。 如果有人能給我一個提示,我將不勝感激。 另外我的錯誤信息不依賴於我提供的用戶名和密碼,也沒有任何信息顯示在mysql的日誌文件中。

謝謝!

回答

11

您仍然無法將驅動程序放入類路徑中。 org.clojure/java.jdbc只提供客戶端庫,而不是驅動程序本身。加入以下內容到您的:dependencies

[mysql/mysql-connector-java "5.1.18"] 
+0

是的,它的工作原理。感謝超級快速的回答! – S4M