当使用funcool/clojure.jdbc从MySQL表中检索项时,所有列名都是小写的,即使该表是用大小写混合的列名创建的。我发现了各种各样的答案,表明重复引用,倒勾等,应该做些什么,但他们没有。客户端是Windows。MySQL服务器端是Linux。
例如,HeidSQL的这个屏幕截图显示了几个列名:
show columns from tablename
:
arena-rest.sql> (map :field (fetch "show columns from EEComponents"))
("Number" "Category" "Footprint" "Footprint path" ...
arena-rest.sql> (fetch "select Number from EEComponents")
[{:number "120-00001"} {:number "190-99999"} {:number "180-00002"}
{:number "180-00003"}]
我希望得到这样的回应
[{:Number "120-00001"} {:Number "190-99999"} {:Number "180-00002"}
{:Number "180-00003"}]
我试过了
select "Number" from EEComponents
,
select Number AS "Number"...
等,包括使用回击,但没有运气。
所以我不确定它是在java还是clojure部分。一些搜索表明应该在Java结果集中保留列大小写。所以我认为这是funcool/clojure.jdbc包装器的本地部分。
我的clojure项目是:
(defproject arena-rest "0.1.0-SNAPSHOT"
:description "FIXME: write description"
:url "http://example.com/FIXME"
:dependencies [[org.clojure/clojure "1.9.0"]
[clj-http "3.9.1"]
[cheshire "LATEST"]
[crouton "LATEST"]
[mysql/mysql-connector-java "8.0.12"]
[funcool/clojure.jdbc "0.9.0"]
[org.clojure/tools.trace "0.7.9"]
[org.flatland/ordered "1.5.6"]]
:main arena-rest.core)
(ns arena-rest.sql
(:require [jdbc.core :as jdbc]
[clojure.string :as str]
[clojure.pprint :refer [pprint]]
[clojure.repl :refer [doc]] ... and other stuff
那么,是可以使用funcool/clojure.jdbc返回大小写正确的列名,还是需要使用org.clojure/java.jdbc等其他列名?