Heroku Clojure错误:此结果集已关闭



我得到了"此结果集已关闭"。在Heroku上我的Clojure Web服务器应用程序的新实例中的错误。错误发生在更新上!操作(这不是懒惰,所以不是这个问题(。选择语句在同一数据库连接上正常工作。

代码在我的机器上工作:)。它在几周前创建的Heroku实例上工作。它在新创建的实例上失败。我已经通过删除的代码版本重复了错误。

最近Heroku改变了吗?我被告知,当其他人对JDBC池有问题时,他们看到了这个错误。那会在这里发生吗?

这是我的测试代码,减去要求。

(defn vote-for-paper [db user-id paper-id]
(update! db :votes {:votes 1} ["user_id=? AND paper_id=?" user-id paper-id]))

(defroutes voting
(POST "/vote" [:as {db :connection}] (vote-for-paper db 1 2)))
(defn make-wrap-db [db-url]
(fn [handler]  
    (fn [req]   
        (with-db-connection [db {:connection-uri db-url}]
            (handler (assoc req :connection db))))))
(defn make-handler [db-url] 
(let [wrap-db (make-wrap-db db-url)] 
    (-> voting
        (wrap-db)
        (wrap-with-logger))))
(defn -main [& args]
(let [
        url (System/getenv "JDBC_DATABASE_URL") 
        portString (System/getenv "PORT")
        port (Integer/parseInt portString)
    ]
        (run-jetty (make-handler url) {:port port})))

我认为您正在重新介绍DB局部变量。

(defroutes voting
(POST "/vote" [:as {db :connection}] (vote-for-paper db 1 2)))

应该是

(defroutes voting
(POST "/vote" (vote-for-paper db 1 2)))

您可以尝试一下吗?我正在移动上,所以这是未经测试的代码。

我有相同的问题,并更改了我的项目。 [postgresql "9.3-1102.jdbc41"][org.postgresql/postgresql "42.2.6.jre7"]问题消失了。

最新更新