Clojure 从数据库表中选择的值返回nil

Clojure 从数据库表中选择的值返回nil,clojure,Clojure,我是clojure的新手,我正在尝试从数据库中选择值。它确实选择了值(我认为),尽管它只返回nil 我试着跟着教程走 这是我的密码 (ns hello.core_test) (:require [clojure.java.jdbc :as sql])) (def mysql-db { :subprotocol "mysql" :subname "//localhost:3307/blink" :user "root" :passwor

我是clojure的新手,我正在尝试从数据库中选择值。它确实选择了值(我认为),尽管它只返回nil

我试着跟着教程走

这是我的密码

(ns hello.core_test) 

 (:require [clojure.java.jdbc :as sql]))


  (def mysql-db {
      :subprotocol "mysql"
      :subname "//localhost:3307/blink"
      :user "root"
      :password ""})
        (println (sql/query mysql-db
      ["select firstName from users"]
       :row-fn :firstName))
它回来了

(nil nil nil nil nil nil nil nil nil)
(数据库包含9个变量)

编辑。很明显,如果我移除

:行fn:firstName

并将其替换为

:行:名字

它以如下格式返回

({:名天使{:名奥斯汀{:名恩里科{:名威尔森{:名基思}{:名约书亚{:名罗恩·安德烈}{:名艾伦·杰伊{:名伊万})


clojure.java.jdbc
默认情况下将列转换为
(>column name clojure.string/lower-case关键字)
,您自己已经回答了部分问题,显示结果时没有
:行fn

现在,使用
[org.clojure/java.jdbc“0.7.7”]
这对我很有用:

(sql/query mysql-db ["select firstName from users"] {:row-fn :firstname})
如果不希望自动转换,请执行以下操作:

(sql/query mysql-db ["select firstName from users"] {:identifiers identity :keywordize? false})
;; => ({"firstName" "one"} {"firstName" "two"} {"firstName" "three"})

如果删除
:row fn:firstName
,并且此代码无效,您会得到什么。您的
ns
宏在
:require
之前结束。请发布您的实际代码。^Uhm我认为这是堆栈溢出中的粘贴问题。我的名称空间包含:require.If我删除:行fn:firstname。它以{:firstName Value}格式返回谢谢。我现在正在尝试查找JDBC的更新版本:D