如何使用 clojure 在 JDBC 中禁用自动提交

How to disable autocommit in JDBC using clojure

我想使用 Clojure 的 JDBC 接口来更新 Hive 数据库。特别是,我想添加分区。代码如下所示:

(jdbc/db-do-commands hive-db ["ALTER TABLE foo ADD PARTITION (year=2015, month=10, day=1, hour=1) LOCATION '/bar'"])

但是,我遇到了一个错误:

java.sql.SQLException: enabling autocommit is not supported
 at org.apache.hive.jdbc.HiveConnection.setAutoCommit (HiveConnection.java:1071)
    clojure.java.jdbc$db_transaction_STAR_.doInvoke (jdbc.clj:605)
    clojure.lang.RestFn.invoke (RestFn.java:425)
    ...

据我所知,在 Hive 的 JDBC 驱动程序中启用自动提交目前有 several unresolved issues。因此我想禁用自动提交。 clojure.java.jdbc 是如何做到的?

也许像下面这样的东西会有所帮助:

(let [con (db-find-connection db)]
   (.setAutoCommit con false))

祝你好运。