无法使用Korma(Clojure)连接到Heroku上的postgresql DB

无法使用Korma(Clojure)连接到Heroku上的postgresql DB,第1张

概述我在Heroku的配置设置中解析 postgresql uri.但我似乎无法让它发挥作用.任何帮助将不胜感激,我可能会错过一些直接的东西. 这是使用的代码. (def dev-db-info {:db "dbname" :user "username"})(defn parse-db-uri [uri] (drop 1 (split uri #"://|:|@|/"))) 我在Heroku的配置设置中解析 postgresql uri.但我似乎无法让它发挥作用.任何帮助将不胜感激,我可能会错过一些直接的东西.

这是使用的代码.

(def dev-db-info  {:db "dbname"   :user "username"})(defn parse-db-uri  [uri]  (drop 1 (split uri #"://|:|@|/")))(defn create-map-from-uri  [uri]  (let [parsed (parse-db-uri uri)]  (zipmap [:user :password :host :port :db] parsed)))(defn db-info  []  (if production?    (create-map-from-uri (System/getenv "DATABASE_URL"))    dev-db-info))(defdb connected-db   (postgres (db-info)))

我从uri检索的地图如下所示:

{:db "dbname" :port "5662" :host "ec2-url.compute-1.amazonaws.com" :password "pwd" :user "username"}

我收到以下错误:

Connections Could not be acquired from the underlying database!

编辑:

我已经放弃使用Korma,并转而使用Clojure.JDBC 0.2.3,它支持“connection-uri”,因此支持与db的ssl连接. Korma目前不支持这一点.我将在Github上提出一个问题以允许这种连接方法.

编辑:
没有理由再使用[org.clojars.ccFontes / korma“0.3.0-beta12-pgssl”]了.阅读 this以了解更多信息.另外,请忽略以下说明.

添加了postgres SSL支持.

在project.clj中插入:
[org.clojars.ccFontes / korma“0.3.0-beta12-pgssl”]

在heroku上定义与postgres数据库的连接:

(ns app.db    (:require [clojure.java.jdbc :as sql]              [korma.db :as db]              [clojure.string :as string])    (:import (java.net URI)))    (defn set-app-pg-db! [mode]      (let [db-uri (java.net.URI. (System/getenv "DATABASE_URL"))]        (->> (string/split (.getUserInfo db-uri) #":")          (#(IDentity {:db (last (string/split (System/getenv "DATABASE_URL") #"\/"))                       :host (.getHost db-uri)                       :port (.getPort db-uri)                       :user (% 0)                       :password (% 1)                       :ssl true                       :sslfactory (when (= mode :dev) "org.postgresql.ssl.NonValIDatingFactory")}))          (db/postgres)          (db/defdb app-pg-db))))

该修复程序使用Tomcat JDBC Connection Pool及其配置示例作为连接池,因此它可能不太适合每个人的需求,而且这只是一个黑客攻击.理想情况下,原始的Korma项目应该整合这些变化或其他可能的解决方案.

非常感谢来自其他人的一些反馈,因为它只在我自己的项目中测试过.谢谢.

总结

以上是内存溢出为你收集整理的无法使用Korma(Clojure)连接到Heroku上的postgresql DB全部内容,希望文章能够帮你解决无法使用Korma(Clojure)连接到Heroku上的postgresql DB所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1165861.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存