【问题标题】:Erlang Mnesia not working with size one recordErlang Mnesia 无法处理第一条记录
【发布时间】:2017-06-10 18:11:28
【问题描述】:

我一直试图让 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 个或更多字段的记录,所以我认为某处有问题)

【问题讨论】:

    标签: erlang mnesia


    【解决方案1】:

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

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

    (强调我的)

    【讨论】:

    • 非常感谢!事实上,我们确实查看了文档并进行了搜索,但我们都没有注意到这句话。我们首先遇到了具有两个属性的记录的问题,也许这就是原因。感谢您的帮助:D
    猜你喜欢
    • 1970-01-01
    • 2016-09-18
    • 2018-09-18
    • 1970-01-01
    • 2010-12-22
    • 2015-05-24
    • 1970-01-01
    • 2018-01-21
    • 2015-05-20
    相关资源
    最近更新 更多