我在 AWS 上运行我的Transactor( EC2 )和Datomic( DynamoDB ),过了一段时间,我开始获取以下内容错误,我什么都不懂:
:db.error/connection-released The connection has been released.
....
此外,我之前运行了我的应用程序一个月,但当时没有收到此错误。
任何想法?如果这种情况经常发生,我应该在应用代码中重新建立数据库连接吗?
答案 0 :(得分:2)
您是否曾在数据库上调用release?我认为这可能导致这一点,一旦你致电发布,你就无法在应用程序的生命周期中再次使用任何Datomic连接。连接非常轻量级,因此很少有理由调用此函数。
答案 1 :(得分:2)
事实证明,当交易者实例重新启动时,我得到了这个错误,所以我发现解决这个问题的方法是代码:
(defn establish-conn
[]
(try
(d/create-database (conf/get :db-uri))
(reset! conn (d/connect (conf/get :db-uri)))
(catch Throwable t
(println "Could not establish db conn." t))))
(defn fix-if-conn-ex
;;getting exception's error message
[err-msg]
(when (str/includes? err-msg ":db.error/connection-released")
(db/establish-conn)))