如何从clojure.java.jdbc删除或创建数据库? [英] How do I drop or create a database from clojure.java.jdbc?
本文介绍了如何从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屋!
查看全文