Estoy intentando acceder a una base de datos Postgres dentro de Clojure. He encontrado un montón de ejemplos de proyectos que utilizan DB, la creación de la base de datos de esta manera:Problema del controlador con PostgreSQL/Clojure
(def db
{:classname "org.postgresql.Driver"
:subprotocol "postgresql"
:subname "//localhost/testdb"
:username "postgres"
:password "postgres"})
estoy continuación, tratando de entonces acceder a la base de datos de esta manera:
(sql/with-connection db
(sql/with-query-results recs ["select * from asdf"]
(doseq [rec recs]
(println rec))))
Sin embargo, estoy recibiendo este error:
No suitable driver found for jdbc:postgresql://localhost/testdb
[Thrown class java.sql.SQLException]
estoy asumiendo el problema es con :classname "org.postgresql.Driver"
, pero no estoy seguro de cuál es la solución. Me imagino que debo proporcionar este controlador, pero no estoy seguro de dónde conseguirlo o dónde ubicarlo. Hay una descarga disponible en postgresql.org - ¿Debo descargar eso? ¿O hay algo que pueda poner en mi configuración de proyecto para obtener lein
para descargarlo como una dependencia? Una vez que lo tengo, ¿a dónde va?
Editar (en respuesta a @mtnygard): tengo esto en mi project.clj:
(defproject hello-www "1.0.0-SNAPSHOT"
:dependencies [[org.clojure/clojure "1.2.1"]
[postgresql/postgresql "8.4-702.jdbc4"]
...]
Mi versión es Postgres 8.4:
[/media/data/dev/clojure/hello-www (postgres *)]$ postgres --version
postgres (PostgreSQL) 8.4.8
¿Ejecutó "lein deps" después de agregar postgresql a su project.clj? – mtnygard
Además, ¿cómo está ejecutando el cuerpo principal de su proyecto? "lein deps" simplemente pone los frascos en lib /. Aún debe ejecutar su programa con un classpath configurado. "lein run" y "lein repl" establecerán su classpath, por ejemplo. – mtnygard
¡Has encontrado el problema! He corrido 'lein deps', pero no había actualizado mi REPL. Reiniciar Swank me dio una conexión. ¡Gracias! – Topher