-record(ng, {ng}).
mnesia:create_table(ng, [{type, set}, {attributes, record_info(fields, ng)}]).
我收到:{aborted,{bad_type,ng,{attributes,[ng]}}} 错误。
怎么了?如何创建一个包含一列(已命名)的 mnesia 表?
最佳答案
该记录必须至少有 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).
关于erlang - 如何创建一个包含一列的 mnesia 表并从那里读取/写入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21788984/