Clojure警告:"结果集-seq已存在于clojure.core中"

Ada*_*dam 3 clojure compojure noir

我是Clojure的新手并使用Noir框架构建一个Web应用程序(非常类似于Compojure,实际上我认为它是具有不同请求处理程序层的Compojure).我在导入JDBC库时收到警告:

WARNING: resultset-seq already refers to: #'clojure.core/resultset-seq in namespace: webapp.models.database, being replaced by: #'clojure.java.jdbc/resultset-seq
Run Code Online (Sandbox Code Playgroud)

我是否必须接受这个警告,或者有办法吗?我正在使用以下方法导入JDBC库:

(use 'clojure.java.jdbc)
Run Code Online (Sandbox Code Playgroud)

Mat*_*ard 9

您可以通过指定要导入的确切绑定来避免此问题:

(use '[clojure.java.jdbc :only [insert-values transaction]])
(transaction
  (insert-values ...))
Run Code Online (Sandbox Code Playgroud)

另一个选择是:exclude违规绑定:

(use '[clojure.java.jdbc :exclude [resultset-seq]])
(transaction
  (insert-values ...))
Run Code Online (Sandbox Code Playgroud)

您也可以使用require:

(require '[clojure.java.jdbc :as db])
(db/transaction
  (db/insert-values ...))
Run Code Online (Sandbox Code Playgroud)

关于向前兼容性,require可以说是最安全的.使用:only只是稍微不那么干净,但仍然是一个非常好的方法(并且当它中断时很容易修复).排除当前有问题的绑定可能是解决问题最不具备解决方法的方法,因为其他冲突的绑定可以随时出现,并追踪从哪里导入的内容可能很棘手.