我收到了“此ResultSet已关闭”。在Heroku上我的Clojure Web服务器应用程序的新实例出错。更新时发生错误!操作(这不是懒惰所以不是那个问题)。 Select语句在同一数据库连接上正常工作。
代码适用于我的机器:)。它适用于几周前创建的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})))
答案 0 :(得分:0)
我认为您正在重新绑定defroutes中的db局部变量。
(defroutes voting
(POST "/vote" [:as {db :connection}] (vote-for-paper db 1 2)))
应该是
(defroutes voting
(POST "/vote" (vote-for-paper db 1 2)))
你可以尝试一下吗?我在手机上,所以这是未经测试的代码。
答案 1 :(得分:0)
我遇到了同样的问题,并更改了我的project.clj的postgresql驱动程序,从
import tkinter as tk
def reveal(event):
label = event.widget
label.configure(text=label.full_text)
root = tk.Tk()
root.geometry("400x100")
word_frame = tk.Frame(root, borderwidth=1, relief="sunken")
word_frame.pack(side="top", fill="x", padx=20, pady=20)
term = "Impossible Mission Force"
for word in term.split():
letter = word[0].upper()
label = tk.Label(word_frame, text=letter, borderwidth=0,
font=("Helvetica", 18))
label.full_text = word
label.pack(side="left")
label.bind("<1>", reveal)
tk.mainloop()
至
[postgresql "9.3-1102.jdbc41"]
问题就解决了。