2017-01-25 3 views
0

私はMnesiaをキーの値そのものであるサイズ1のレコードで動作させようとしていますが、動作していないようです。Erlang 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). 

誰もが正しい方向に私を指すことができますか? (別の問題として、別のプログラムの3つ以上のフィールドのレコードでmnesiaを動作させることしかできないため、どこかに何か問題があると思っています)

答えて

4

1つのフィールドだけでレコードを保存することはできませんMnesiaのテーブル。それはおそらくあなたが最初になりませんどこが、マニュアルに記載さが、mnesia:create_table/2の説明にあります。

  • {attributes, AtomList}がテーブルを移入することになっているレコードの属性名のリストです。デフォルトは[key, val]です。 テーブルには、少なくともキーに加えて1つの特別な属性が必要です。

(強調鉱山)

+1

ありがとうございました!私たちは実際に文書を見てそれを検索しましたが、私たちの誰もその文に気づいていませんでした。最初に2つの属性を持つレコードで問題が発生しました。その理由は多分です。助けてくれてありがとう:D –

関連する問題