2012-09-05 34 views
7

Clojure.java.jdbc içinde db-spec s ile bir sorun üzerinde saçımı yırttım. Son zamanlarda bazı davranışların değişip değişmediğini merak ediyorum, çünkü neredeyse aynı olan bir şey çok yakın zamana kadar çalıştı.clojure.java.jdbc içinde gerekli parametre eksik

Benim db-Spec şuna benzer: Çoğaltma daha sonra

(defn prod [] 
    "Yes, I've verified all of the loaded properties are accurate for the connection" 
    { :classname (get-property "acedia.bbts") 
    :subprotocol (get-property "acedia.bbts.subprotocol") 
    :subname (str "@" (get-property "acedia.bbts.dev.host") ":" (get-property "acedia.bbts.dev.port") ":" (get-property "acedia.bbts.dev.sid")) 
    :user (get-property "acedia.bbts.dev.user") 
    :password (get-property "acedia.bbts.dev.password")}) 

Ve:

user => (prod) 
{:classname "oracle.jdbc.driver.OracleDriver", :subprotocol "oracle", :subname "@hostname:1521:bbts", :user "user", :password "pass"} 

user=> (with-connection bbts-dev (with-query-results rs ["select * from customer where rownum < 10"] (dorun (map #(println (:firstname %)) rs)))) 

user => (use 'clojure.stacktrace) 
nil 
user => (e) 
java.lang.IllegalArgumentException: db-spec [email protected] is missing a required parameter 
at clojure.java.jdbc.internal$get_connection.invoke (internal.clj:147) 
    clojure.java.jdbc.internal$with_connection_STAR_.invoke (internal.clj:154) 
    user$eval1116.invoke (NO_SOURCE_FILE:1) 
    clojure.lang.Compiler.eval (Compiler.java:6465) 
    clojure.lang.Compiler.eval (Compiler.java:6431) 
    clojure.core$eval.invoke (core.clj:2795) 
    clojure.main$repl$read_eval_print__5967.invoke (main.clj:244) 
    clojure.main$repl$fn__5972.invoke (main.clj:265) 
nil 

ben de NO_SOURCE_FILE referans olduğu hakkında hiçbir fikrin yok. Oracle sürücüsünün erişilebilir, yüklenmiş, vb. Olduğunu doğruladım. Db-spec'ta hangi parametreyi eksik olabilirdim?

Not: MS SQL Server'da da aynı sorun var.

+1

kullanıcı $ eval1116.invoke (NO_SOURCE_FILE: 1) Eğer REPL de yazarak ifade eder –

cevap

7

konu prod bir fonksiyondur, yani her iki değişiklik prod (def prod {all props here}) olmak veya gerektiğinde prod işlevi çağırmak için olmasıdır: (with-connection (prod) (with-query-results

İlgili konular