0

私は2つのテーブルカウンターとカウントを持っています

   -record(counter, {key, value}).
    -record(count, {key, value}).


    create() ->
        mnesia:create_schema([node()]),
        mnesia:start(),
        mnesia:create_table(counter, [{attributes, record_info(fields, counter)}, {disc_copies, [node()]}]),
        mnesia:create_table(count, [{attributes, record_info(fields, count)}, {disc_copies, [node()]}]),



    mnesia:stop().

しかし、この関数を実行しようとすると

backup()->

    mnesia:transaction(fun() ->
  Records = mnesia:select(counter, [{'_', [], ['$_']}]),
  [ok = mnesia:write(count, Record, write) || Record <- Records]
end).

このエラーがあります

2> model:backup().
{aborted,{bad_type,{counter,test,353}}}

あなたのコードを使用するとき:

mnesia:create_table(count, [{record_name, counter}, {attributes, record_info(fields, counter)}, {disc_copies, [node()]}]).

model:reset() を実行しようとすると、テーブルカウントとテーブルカウンターのデータが削除されます

私の目標は、カウンターのデータを削除することです

これはreset()のコードです

reset() ->
    stop(),
    destroy(),
    create(),
    start(),

    {ok}.


destroy() ->
    mnesia:start(),
    mnesia:delete_table(counter),
    mnesia:delete_table(person),
    mnesia:stop(),
    mnesia:delete_schema([node()]).


create() ->
    mnesia:create_schema([node()]),
    mnesia:start(),
    mnesia:create_table(counter, [{attributes, record_info(fields, counter)}, {disc_copies, [node()]}]),
    mnesia:create_table(person, [{attributes, record_info(fields, person)}, {disc_copies, [node()]}]),
  mnesia:create_table(person_backup,[{disc_copies, [node()]},{attributes, record_info(fields, person)},
    {record_name, person}]),
    mnesia:stop().
4

1 に答える 1

1

カウント テーブルにカウンター レコードを書き込もうとしていますが、エラーが発生しています。これには 2 つの方法があります。

  1. カウンターと呼ばれる単一のレコードを使用し、カウントテーブルにも mnesia:create_table(count, [ {record_name, counter} , {attributes, record_info(fields, counter)}, {disc_copies, [node()]}]) として使用します.

  2. 他のフィールドがあり、上記が不可能な場合は、書き込む前にカウンター レコードからカウント レコードに必要な要素をコピーできます。

于 2013-02-18T17:26:19.420 に答える