-record(ng, {ng}).
mnesia:create_table(ng, [{type, set}, {attributes, record_info(fields, ng)}]).
我收到:{aborted,{bad_type,ng,{attributes,[ng]}}}错误。
怎么了?如何使用一列(名为)创建一个mnesia表?
答案 0 :(得分:3)
记录必须至少包含2个字段。这可行:
-record(ng, {ng, extrafield}).
mnesia:create_table(ng, [{type, set}, {attributes, record_info(fields, ng)}]).
来自http://www.erlang.org/doc/man/mnesia.html#create_table-2
“除了密钥外,该表必须至少有一个额外的属性。”
编辑:找不到单个列是否可行的答案,但this 2007 thread表示没有。
我个人使用键/值列来执行此操作,如下所示:
-record(proximaglobal, {key, value}).
mnesia:create_table(proximaglobal, [{attributes, record_info(fields, proximaglobal)}, {disc_only_copies, [node()]}]).
mnesia:sync_transaction(fun() -> mnesia:write(#proximaglobal{key=time, value=WorldTime}) end).
mnesia:sync_transaction(fun() -> mnesia:read(proximaglobal, time) end).
答案 1 :(得分:0)
{attributes,AtomList}应该填充表的记录的属性名称列表。默认值为[key,val]。除密钥外,该表必须至少有一个额外属性。