나는 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 다음에 와야한다.
분명히 뭔가 잘못하고 있습니다. 누군가 제발 도와 줄 수 있니?
감사합니다.
벡터가 너무 많이 중첩되어 있습니까? retract-statements는 이미 벡터의 벡터이기 때문에'@ (d/transact conn [retract-statements]) 대신 '@ (d/transact conn retract-statements)'를 수행해야합니까? 그냥 생각했는데 ... –
방금 (delete-database uri)와 (create-database uri)를 사용했습니다. 속성을 철회 할 수있는 방법이 없다 - 모든 속성을 없애는 유일한 방법은 이름을 바꾸는 것입니다. 그 말이 맞습니까? – siphiuel
네가 맞다고 생각한다. https://groups.google.com/forum/#!msg/datomic/7-9lUE9Nm4k/fOhAvt-gyOIJ –