gpt4 book ai didi

postgresql - Clojure JDBC - 此结果集已关闭

转载 作者:行者123 更新时间:2023-11-29 11:29:54 25 4
gpt4 key购买 nike

我目前正在学习使用 Clojure 以及与 postgresql 的连接,但我被卡住了。在我的代码中,我可以使用 SELECT 成功查询使用 java.jdbc依赖但在我 UPDATE 时出现异常或 INSERT

我正在使用这些依赖项

[org.clojure/java.jdbc "0.7.8"]
[postgresql "9.3-1102.jdbc41"]

这是我的 SELECT 的工作代码- 从名为 public."user" 的表中获取

(ns knp-api.model.user
(:require [clojure.java.jdbc :as sql]))


(def db "jdbc:postgresql://ampersanda@localhost:5432/idjoesoft_klinik")

(defn get-count [q]
"Get count key from query
It takes jdbc.query as parameter"
(:count (first (into [] q))))

(defn is-user-email-available? [e]
"Returns boolean when email is available.
Take one parameter, it's email"
(let [q "SELECT COUNT(*) FROM public.\"user\" t WHERE user_email = ?"]
(sql/query db [q e] {:result-set-fn #(= 1 (get-count %))})))

这不是我的代码导致出现异常

(defn set-user-timestamp-and-token [email token timestamp]
"update user current token and last login time inside database.
Takes email, token, and current timestamp as parameter"
(sql/update! db
"public.\"user\""
{:user_last_login (str "to_timestamp(" timestamp ")")
:user_token token}
["user_email = ?" email]))

这是个异常(exception)

enter image description here

更新

我也尝试使用 REPL 创建表,我也得到了相同的结果。

knp-api.handler=> (require '[clojure.java.jdbc :as sql])
nil
knp-api.handler=> (sql/db-do-commands "jdbc:postgresql://ampersanda@localhost:5432/idjoesoft_klinik" (sql/create-table-ddl :testing [[:data :text]]))

PSQLException This ResultSet is closed. org.postgresql.jdbc2.AbstractJdbc2ResultSet.checkClosed (AbstractJdbc2ResultSet.java:2852)

最佳答案

我怀疑更新进行得很好,然后它试图返回更改的行,并且它试图以惰性序列的形式返回。尝试打印/处理延迟结果序列的事情可能是在连接关闭后这样做的。

尝试将 select 语句包装在对 doall 的调用中,以确保它被立即读取并且不允许成为惰性数据库。

关于postgresql - Clojure JDBC - 此结果集已关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53102574/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com