Erlang Mnesia 不处理第一条记录
Erlang Mnesia not working with size one record
我一直在尝试让 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 个或更多字段的记录,所以我认为某处有问题)
不可能在 Mnesia 中存储只有一个字段的记录 table。文档中提到了这一点,虽然可能不是您首先要看的地方,但在 mnesia:create_table/2
:
的描述中
{attributes, AtomList}
is a list of the attribute names for the records that are supposed to populate the table. Default is [key, val]
. The table must at least have one extra attribute in addition to the key.
(强调我的)
我一直在尝试让 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 个或更多字段的记录,所以我认为某处有问题)
不可能在 Mnesia 中存储只有一个字段的记录 table。文档中提到了这一点,虽然可能不是您首先要看的地方,但在 mnesia:create_table/2
:
{attributes, AtomList}
is a list of the attribute names for the records that are supposed to populate the table. Default is[key, val]
. The table must at least have one extra attribute in addition to the key.
(强调我的)