Erlang Mnesia没有使用一号记录

时间:2017-01-25 14:07:44

标签: erlang mnesia

我一直在努力让Mnesia使用大小为1的记录,其中关键是值本身,但它似乎不起作用。

控制台:

Eshell V7.3  (abort with ^G)
1> c(mnesiac).
{ok,mnesiac}
2> mnesiac:in
init/0    insert/1  
2> mnesiac:init().
{aborted,{bad_type,player,{attributes,[id]}}}

代码:

  1 -module(mnesiac).
  2 -compile(export_all).
  3 
  4 -record(player, {id}).
  5 
  6 init() ->
  7     mnesia:create_schema([node()]),
  8     mnesia:start(),
  9     mnesia:create_table(player,
 10         [ {disc_copies, [node()] },
 11              {attributes,
 12                 record_info(fields,player)} ]).
 13 
 14 insert(Id) ->
 15     Fun = fun() ->
 16         mnesia:write( #player{id=Id})
 17     end,
 18     mnesia:transaction(Fun).

有人能指出我正确的方向吗? (另一个问题是,我们只能让mnesia在另一个程序中使用3个或更多字段的记录,所以我认为某处出了问题)

1 个答案:

答案 0 :(得分:3)

无法在Mnesia表中存储只有一个字段的记录。文档中提到了这一点,尽管可能不是您首先看到的地方,但在mnesia:create_table/2的描述中:

  
      
  • {attributes, AtomList}是应该填充表的记录的属性名称列表。默认值为[key, val]除了密钥外,该表必须至少有一个额外的属性。
  •   

(强调我的)