2015-10-23 2 views
3

Je souhaite utiliser l'interface JDBC de Clojure pour mettre à jour une base de données Hive. En particulier, je veux ajouter des partitions. Le code serait comme suit:Comment désactiver l'autocommit dans JDBC en utilisant clojure

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

Cependant, je reçois une erreur:

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) 
    ... 

que je sache, ce qui permet la validation automatique dans le pilote JDBC de Ruche a severalissues sans solution actuellement. Je veux donc désactiver l'autocommit. Comment cela se fait-il en clojure.java.jdbc?

Répondre

2

Peut-être quelque chose comme ce qui suit serait utile:

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

Bonne chance.

+0

Merci - J'ai trouvé une solution de contournement qui ressemble à ce que vous avez écrit. – Sh4pe