尝试创建 mnesia 表时出现“bad_type”错误

And*_*yuk 3 erlang mnesia

对于我的生活,无法弄清楚这一点。我正在尝试创建 mnesia 表,但不断收到这个奇怪的错误。

这是我的命令:

ok = mnesia:create_schema(Nodes),
rpc:multicall(Nodes, application, start, [mnesia]),
{_, ok} = mnesia:create_table(rr_events,
        [{attributes, record_info(fields, rr_events)},
         {index, [#rr_events.key]},
         {disc_copies, Nodes}]),
rpc:multicall(Nodes, application, stop, [mnesia]).
Run Code Online (Sandbox Code Playgroud)

这是我的记录:

-record(rr_events, {key, events=[]}).
Run Code Online (Sandbox Code Playgroud)

这是错误:

=PROGRESS REPORT==== 24-Mar-2016::21:53:42 ===
         application: mnesia
          started_at: nonode@nohost
** exception error: no match of right hand side value
                    {aborted,{bad_type,rr_events,{index,[2]}}}
     in function  rr:install/1 (c:/Users/zzzz/Projects/zzz/zzz/rr/rr/_build/default/lib/rr/src/rr.erl, line 13)
Run Code Online (Sandbox Code Playgroud)

知道这可能是什么吗?无法弄清楚这一点。

Gue*_*ger 6

我最近遇到了这个问题。了解一些 Erlang声明如下:

请注意,您不需要在记录的第一个字段上放置索引,因为默认情况下已为您完成。

如果您只需要对记录的第一个元素进行索引,那么我建议省略{index, [record_name]}.

此外,虽然来自 LYSE 的段落暗示了这一点,但官方 Erlang 文档更进一步并指出:

指数。这是一个属性名称或整数列表,它指定 Mnesia 将在其上构建和维护额外索引表的元组位置。