数据错误信息

Datomic error message

我在调用交易时收到此信息:

datomic.impl.Exceptions$IllegalArgumentExceptionInfo: :db.error/not-a-data-function Not a data function: 71 data: {:db/error :db.error/not-a-data-function} java.util.concurrent.ExecutionException: java.lang.IllegalArgumentException: :db.error/not-a-data-function Not a data function: 71

错误消息试图告诉我什么?我的数据中任何地方都没有“71”,所以啊,嗯……是的。这将 clojure 堆栈跟踪提升到一个新的水平。

Datomic 支持数据库功能。因此,假设您安装了一个名为“:foo/bar”的数据库函数,您将在事务中这样调用它:

[[:foo/bar arg1 arg2 ...]]

此错误的意思是它认为您正在调用数据库函数,但该函数不存在。在这种情况下,它认为函数名称是 71

查看您正在处理的数据并确保其格式正确。例如,我在将地图作为 {:my/key 42} 而不是 [{:my/key 42}] 传递时看到了这个错误。 transact 的输入应该始终是一个数据序列,即使您正在处理的只是一个 hashmap。