clojure - 尝试处理 Datomic 模式时出现 "Unable to resolve entity"错误

标签 clojure datomic

我是 Datomic super 新手。我正在尝试向数据库添加分类法,但收到一个我无法理解的错误。错误是:

{:datomic.client-spi/request-id "c587b3e8-8f19-45f5-a563-bdba13e3a0d8",
 :cognitect.anomalies/category :cognitect.anomalies/not-found,
 :cognitect.anomalies/message
 ":db.error/not-an-entity Unable to resolve entity: {:idx -1000000, :part :db.part/db} in datom [{:idx -1000000, :part :db.part/db} :db/ident :arb/title]",
 :dbs
 [{:database-id "datomic:dev://localhost:4334/datemo",
   :t 1004,
   :next-t 1009,
   :history false}]}

这是我正在使用的分类法:

[{:db/id #db/id [:db.part/db]
  :db/ident         :arb/title
  :db/unique        :db.unique/identity
  :db/valueType     :db.type/string
  :db/cardinality   :db.cardinality/one
  :db/fulltext      true
  :db/index         true
  :db.install/_attribute :db.part/db}

 {:db/id #db/id [:db.part/db]
  :db/ident         :arb/description
  :db/unique        :db.unique/identity
  :db/valueType     :db.type/string
  :db/cardinality   :db.cardinality/one
  :db.install/_attribute :db.part/db}

 {:db/id #db/id [:db.part/db]
  :db/ident         :arb/content
  :db/unique        :db.unique/identity
  :db/valueType     :db.type/ref
  :db/isComponent   true
  :db/cardinality   :db.cardinality/many
  :db.install/_attribute :db.part/db}]

这是我调用的电话:

(def arb-tx (-> (io/resource "schemas/arb.edn") ;; the schema above
                (read-all)
                (first)))

(pprint (<!! (client/transact conn {:tx-data arb-tx})))

我很难从错误消息中理解到底什么是这里无法解决的。我认为我对幕后发生的事情的理解太模糊,无法理解这里出了什么问题。谁能帮我解答一下吗?

最佳答案

Datomic 客户端库不支持架构定义中的显式分区或 :db.install/_attribute。在 Datomic 0.9.5430 之前使用 Peers 时需要这些元素。

尝试将架构定义替换为:

[{:db/ident         :arb/title
  :db/unique        :db.unique/identity
  :db/valueType     :db.type/string
  :db/cardinality   :db.cardinality/one
  :db/fulltext      true
  :db/index         true}

 {:db/ident         :arb/description
  :db/unique        :db.unique/identity
  :db/valueType     :db.type/string
  :db/cardinality   :db.cardinality/one}

 {:db/ident         :arb/content
  :db/unique        :db.unique/identity
  :db/valueType     :db.type/ref
  :db/isComponent   true
  :db/cardinality   :db.cardinality/many}]

-编码(marshal)

关于clojure - 尝试处理 Datomic 模式时出现 "Unable to resolve entity"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41910405/

相关文章:

clojure - 如何将单个 clojurescript 文件作为脚本执行?

clojure - 命名空间映射命名空间上的多方法调度

Datomic 在连接到恢复的数据库时抛出 ActiveMQInternalErrorException

clojure - Clojure 和 Datomic 的 Multi-Tenancy

clojure - 数学幂函数的惰性序列或递归?

clojure - 无法下载 Leiningen 独立 jar 文件

Clojure `case` 不区分不同的符号

clojure - Emacs 中的 Datomic 和 Clojure 入门

clojure - 如何在 Datomic 中收回属性?

clojure - 如何编写一个将整个集合考虑在内的数据查询