4
我在Datomic模式中创建了一组属性。他们的:db/idents被分成三个名字空间::name,:tree,:node。现在我想删除所有这些,并开始新鲜。我发现所有必需的属性:如何收回Datomic中的属性?
(def results
(q '[:find ?e
:where [?e :db/ident ?v]
[(namespace ?v) ?res]
[(contains? #{"task", "node", "tree"} ?res)]
]
(db conn)))
然后创建了一套retractEntity声明:
(def retract-statements
(into [] (map #(vector :db.fn/retractEntity (first %1)) results)))
,现在我试图调用该交易:
@(d/transact conn [retract-statements])
它给我: :db.error /无效的属性架构的变化必须遵循的:db.install /属性或:db.alter /属性
显然我做错了什么。有人可以帮忙吗?
谢谢!
你的载体嵌套太多了吗?您是否需要执行'@(d/transact conn retract-statements)',而不是'@(d/transact conn [retract-statements]) - 因为缩进语句已经是向量的向量。只是一个想法... – 2014-09-05 11:51:58
我刚刚使用(delete-database uri)和(create-database uri),这对我的目的来说是完美的。似乎没有办法收回属性 - 看来摆脱所有属性的唯一可行方法是重命名。这是一个正确的说法吗? – siphiuel 2014-09-05 12:10:28
是的,我认为你是正确的https://groups.google.com/forum/#!msg/datomic/7-9lUE9Nm4k/fOhAvt-gyOIJ – 2014-09-05 12:12:44