无法使用Korma(Clojure)连接到Heroku上的postgresql DB
发布时间:2020-12-13 16:17:06 所属栏目:百科 来源:网络整理
导读:我在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中插入: 在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项目应该整合这些变化或其他可能的解决方案. 非常感谢来自其他人的一些反馈,因为它只在我自己的项目中测试过.谢谢. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 用 Swift 编写 Android 应用
- [flex][java]用hashmap来同时传递多个数据库表的多条记录
- playframework-2.0 – SBT.解决play sbt-plugin的依赖关系
- Swift 正向传值以及利用闭包(closure)实现反向传值(七)
- ajax跨域调用webservice的实现代码
- 正则表达式 – WordPress add_rewrite_rule在本地工作,但不
- c# – 如何使用linq和string.EndsWith()
- c# – 即使CausesValidation为false,也检查页面是否为IsVal
- c – 具有不完整Value参数的Boost.Iterator Facade
- 从后台插入到oracle数据库,页面中插入显示及后台都正常在p