为什么 JVM 找不到 Postgresql JDBC 驱动程序?



我知道这个问题以前有人问过,但现有的答案没有帮助。

现有的答案倾向于告诉你把postgresql-.jar放在/path/to/db/lib/中,我就是这样做的;或者以MySQL为中心。我已经尝试了 5>不同的答案,没有任何帮助。

以下是我在Clojure REPL上运行的内容:

(require '[next.jdbc :as jdbc])
(def db {:dbtype "postgres" :dbname "whatever" :user "whoever" :password "yeahright"})
(jdbc/get-connection db)

我收到此错误:

Execution error (SQLException) at java.sql.DriverManager/getConnection (DriverManager.java:702).
No suitable driver found for jdbc:postgresql://127.0.0.1:5432/<db_name>

我知道 postgresql-42.2.12.jar 在我的计算机上的位置,我使用 :classpath-add 在 project.clj 中添加了该路径。我已经仔细检查了 URL 的语法,据我所知,它是正确的。

爪哇版本:

$ java -version
java version "10.0.1" 2018-04-17
Java(TM) SE Runtime Environment 18.3 (build 10.0.1+10)
Java HotSpot(TM) 64-Bit Server VM 18.3 (build 10.0.1+10, mixed mode)
$ lein -version
Leiningen 2.9.1 on Java 10.0.1 Java HotSpot(TM) 64-Bit Server VM

我在 Ubuntu 和 Mac 上也有同样的问题。有谁知道发生了什么?

根据next.jdbc入门指南 https://cljdoc.org/d/seancorfield/next.jdbc/CURRENT/doc/getting-started

"此外,您还需要为希望用于正在使用的任何数据库的 JDBC 驱动程序添加依赖项。">

对于lein,这意味着在project.clj中将以下内容添加到您的:dependencies向量中:

[org.postgresql/postgresql "42.2.10"]

(这是next.jdbc在撰写本文时(2020 年 5 月 23 日

(进行测试的最新版本(

确保您的project.clj包含这样的条目

[org.postgresql/postgresql "42.2.12"]

:dependencies向量中。

最新更新