Проблема драйвера с PostgreSQL/Clojure
Я пытаюсь получить доступ к базе данных Postgres внутри Clojure. Я нашел тонну примеров проектов с использованием DBs, настроив базу данных следующим образом:
(def db
{:classname "org.postgresql.Driver"
:subprotocol "postgresql"
:subname "//localhost/testdb"
:username "postgres"
:password "postgres"})
затем я пытаюсь получить доступ к базе данных следующим образом:
(sql/with-connection db
(sql/with-query-results recs ["select * from asdf"]
(doseq [rec recs]
(println rec))))
тем не менее, я получаю эту ошибку:
No suitable driver found for jdbc:postgresql://localhost/testdb
[Thrown class java.sql.SQLException]
Я предполагаю, что проблема с :classname "org.postgresql.Driver"
, но я не уверен, что решение есть. Я предполагаю, что мне нужно предоставить этот драйвер, но я не уверен, где его получить или где поставить его. Есть скачать на postgresql.org - я должен скачать что? Или есть что-то, что я могу поместить в настройки проекта, чтобы получить lein
чтобы загрузить его как зависимость? Когда она у меня будет, куда она денется?
редактировать (в ответ на @mtnygard): У меня есть это в моем проекте.clj по:
(defproject hello-www "1.0.0-SNAPSHOT"
:dependencies [[org.clojure/clojure "1.2.1"]
[postgresql/postgresql "8.4-702.jdbc4"]
...]
моя версия postgres 8.4:
[/media/data/dev/clojure/hello-www (postgres *)]$ postgres --version
postgres (PostgreSQL) 8.4.8
1 ответов
вы на правильном пути. Исключение указывает, что путь к классам не имеет организации.в PostgreSQL.Водитель где угодно.
проверка jarvana.com, я нахожу запись для драйвера postgres JDBC 4. В зависимости от остальной среды выполнения доступны и другие версии. Вы можете включить это, отредактировав свой проект.clj файл для добавления этой зависимости:
(defproject xxxxxxx
;;; other stuff
:dependencies [[org.clojure/clojure "1.2.0"]
[postgresql/postgresql "9.0-801.jdbc4"]]
)