如何从clojure.java.jdbc删除或创建数据库? [英] How do I drop or create a database from clojure.java.jdbc?

查看:103
本文介绍了如何从clojure.java.jdbc删除或创建数据库?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想从clojure.java.jdbc创建/删除数据库。这失败:

I would like to create/drop a database from clojure.java.jdbc. This fails:

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

(def db
  {:classname "org.postgresql.Driver"
   :subprotocol "postgresql"
   :subname "//localhost/postgres"
   :user "postgres"})

(defn drop-database [name]
  (sql/do-commands (str "drop database " name)))

(sql/with-connection db 
  (drop-database "db_name"))

并且显然你不能在事务中删除或创建数据库。有任何想法吗?

because do-commands starts a transaction, and apparently you can't drop or create databases inside a transaction. Any ideas?

感谢!

推荐答案

c> do-commands ( here ),并移除对交易的呼叫:

Take the source for do-commands (here) and remove the call to transaction:

(defn drop-database [name]
  (sql/with-connection db
    (with-open [s (.createStatement (sql/connection))]
      (.addBatch s (str "drop database " name))
      (seq (.executeBatch s)))))

这篇关于如何从clojure.java.jdbc删除或创建数据库?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆