Проблема с драйвером в PostgreSQL / Clojure - PullRequest
8 голосов
/ 25 мая 2011

Я пытаюсь получить доступ к базе данных Postgres внутри Clojure.Я нашел множество примеров проектов, использующих БД, которые настраивали базу данных следующим образом:

(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 Ответ

8 голосов
/ 25 мая 2011

Вы на правильном пути.Исключение указывает, что ваш classpath нигде не имеет org.postgresql.Driver.

Проверяя jarvana.com, я нахожу эту запись для драйвера JDBC 4 postgres.Доступны и другие версии, в зависимости от остальной среды выполнения.Вы можете включить это, отредактировав свой файл project.clj, чтобы добавить эту зависимость:

(defproject xxxxxxx
  ;;; other stuff

  :dependencies [[org.clojure/clojure "1.2.0"]
                 [postgresql/postgresql "9.0-801.jdbc4"]]
 )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...