Я создал набор атрибутов в 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/invalid-attribute При изменении схемы должны следовать: db.install/attribute или: db.alter/attribute
Видимо, я делаю что-то неправильно. Кто-то может помочь?
Спасибо!
Ваши векторы вложены слишком много? Вам нужно сделать '@ (d/transact conn retract-statements)', вместо '@ (d/transact conn [retract-statements]) - потому что retract-statements уже вектор векторов. Просто мысль ... –
Я только что использовал (удалить-database uri) и (create-database uri), что отлично подходит для моих целей. Кажется, что нет способа отменить атрибуты - кажется, что единственный возможный способ избавиться от всех атрибутов - это переименование. Это правильное утверждение? – siphiuel
Да, я думаю, что вы правы https://groups.google.com/forum/#!msg/datomic/7-9lUE9Nm4k/fOhAvt-gyOIJ –