I am trying to connect my clojure program to postgresql db. I have the required dependencies. This is my repository.clj file
(ns webdev.repository
(:require [clojure.java.jdbc :as db] ))
(defn create-tables [db]
(db/execute! db ["create table if not exists movies(id serial not null,
name varchar not null, primary key (id));"])
(db/execute! db ["create table if not exists users(id varchar not null,
f_name varchar not null, l_name varchar not null, primary key(id));"])
)
This is part of my core.clj file
(ns webdev.core
(:require [webdev.repository :as repo])
(:require [ring.adapter.jetty :as jetty]
[ring.middleware.reload :refer [wrap-reload]]
[compojure.core :refer [defroutes GET]]
[compojure.route :refer [not-found]]
[ring.handler.dump :refer [handle-dump]]
))
(def db "postgresql://localhost:5432/webdev")
(repo/create-tables db) ;;call to create the tables
...
...
When I run this, I get an error saying
Caused by: org.postgresql.util.PSQLException: This ResultSet is closed.
at org.postgresql.jdbc2.AbstractJdbc2ResultSet.checkClosed(AbstractJdbc2ResultSet.java:2654)
at org.postgresql.jdbc2.AbstractJdbc2ResultSet.setFetchSize(AbstractJdbc2ResultSet.java:1771)
at org.postgresql.jdbc4.Jdbc4Statement.createResultSet(Jdbc4Statement.java:39)
at org.postgresql.jdbc2.AbstractJdbc2Statement$StatementResultHandler.handleResultRows(AbstractJdbc2Statement.java:211)
at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1773)
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:257)
at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:512)
Unable to find out what I am doing wrong.
EDIT
Select statements seem to work. But insert and create table statements give the error "This result set is closed"
-mainand from the repl while developing.