gpt4 book ai didi

postgresql - 无法使用 Korma (Clojure) 连接到 Heroku 上的 postgresql 数据库

转载 作者:行者123 更新时间:2023-11-29 11:19:36 25 4
gpt4 key购买 nike

我在 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 中检索到的 map 如下所示:

{: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”,因此支持到数据库的 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和他们的连接池配置示例,所以它可能不太适合每个人的需要,而且这只是一个 hack。理想情况下,原始 Korma 项目应该集成这些更改或其他可能的解决方案。

感谢其他人的一些反馈,因为它只在我自己的项目中进行过测试。谢谢。

关于postgresql - 无法使用 Korma (Clojure) 连接到 Heroku 上的 postgresql 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13175655/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com