尝试删除数据库数据库时为什么会出现http错误?

时间:2017-02-19 09:23:35

标签: datomic

我试图删除datomic repl中的数据库数据库。我有运行transactor和peer-server,并且正在使用客户端api。这是我在repl中所做的:

(require '[clojure.core.async :refer [<!!]]
         '[datomic.client :as client])

(use 'datomic.client.admin)

(pprint (<!! (delete-database 
    {:db-name "datemo"
     :account-id client/PRO_ACCOUNT
     :secret "datemo"
     :region "none"
     :endpoint "localhost:8998"
     :service "peer-server"
     :access-key "datemo"})))

我得到的错误如下:

{:cognitect.anomalies/category :cognitect.anomalies/incorrect,
 :datomic.client/http-error {:cause "Invalid Op"}}

docs for the datomic client调用参数映射,这是上面提供的。他们似乎也暗示所需的参数是:db-name,但如果我做了类似的事情:

(pprint (<!! (delete-database {:db-name "datemo"})))

我收到一条错误消息,指出&#34;连接配置&#34;无效:

#:cognitect.anomalies{:category :cognitect.anomalies/incorrect,
                      :message
                      "Incomplete or invalid connection config: {:timeout 60000, :account-id \"00000000-0000-0000-0000-000000000000\", :access-key \"datemo\", :secret \"datemo\", :endpoint \"localhost:8998\", :service \"peer-server\", :region nil, :db-name \"datemo\"}"}

2 个答案:

答案 0 :(得分:1)

知情人士的回答:

  

Peerserver无法删除或创建数据库。由于单个peererver可以同时连接到多个transactors /后端存储,语义不清楚'create'意味着什么 - 例如它应该使用哪个后端?

答案 1 :(得分:1)

客户端API无法创建和删除数据库,因为对等服务器不拥有数据库。客户端API与对等服务器通信,因此客户端API不会创建或删除。您将需要使用对等库来创建或删除。

http://docs.datomic.com/clojure/#datomic.api/delete-database http://docs.datomic.com/clojure/#datomic.api/create-database

Datomic docs中的本地开发人员设置教程使用了peer api,并且在datomic示例的当天也有使用peer api的例子:

http://docs.datomic.com/dev-setup.html#create-db https://github.com/Datomic/day-of-datomic