2016-03-25 18 views
1

Für das Leben von mir, kann das nicht herausfinden. Ich versuche, Mnesiatabellen zu erstellen, bekomme aber immer diesen seltsamen Fehler."bad_type" Fehler beim Versuch, Mnesia-Tabellen zu erstellen

Hier ist mein Befehl:

ok = mnesia:create_schema(Nodes), 
rpc:multicall(Nodes, application, start, [mnesia]), 
{_, ok} = mnesia:create_table(rr_events, 
     [{attributes, record_info(fields, rr_events)}, 
     {index, [#rr_events.key]}, 
     {disc_copies, Nodes}]), 
rpc:multicall(Nodes, application, stop, [mnesia]). 

Hier ist mein Zeuge:

-record(rr_events, {key, events=[]}). 

Hier ist der Fehler:

=PROGRESS REPORT==== 24-Mar-2016::21:53:42 === 
     application: mnesia 
      started_at: [email protected] 
** exception error: no match of right hand side value 
        {aborted,{bad_type,rr_events,{index,[2]}}} 
    in function rr:install/1 (c:/Users/zzzz/Projects/zzz/zzz/rr/rr/_build/default/lib/rr/src/rr.erl, line 13) 

Jede Idee, was das sein könnte? Kann das nicht herausfinden.

Antwort

1

ich vor kurzem über diese Frage kam. Learn you some Erlang besagt Folgendes:

Note that you do not need to put an index on the first field of the record, as this is done for you by default.

Wenn Sie nur Index auf das erste Element eines Datensatzes müssen dann würde ich das Weglassen {index, [record_name]} beraten.

Auch während der Absatz von LYSE es schlägt die official Erlang documentation geht man weiter und sagt:

index. This is a list of attribute names, or integers, which specify the tuple positions on which Mnesia is to build and maintain an extra index table.

0

Puh! Dank diesen excellent blog post mich zu einer Antwort führen, Zitat:

This error:

{aborted,{bad_type,wrud_record,{index,[2]}}}

will occur if you used the first element of the record to index one table, like:

-record(wrud_record, {user, date, label, remark, url}).

and

mnesia:create_table(wrud_record,[ {index,[user]}, {attributes, record_info(fields, wrud_record)}])

, so you should change the index to another element like remark here:

mnesia:create_table(wrud_record,[ {index,[remark]}, {attributes, record_info(fields, wrud_record)}])

everything will be fine. :)