2017-01-25 2 views
0

Я пытаюсь заставить Mnesia работать с записями размера один, где ключ является самим значением, но он, похоже, не работает.Erlang Mnesia не работает с размером одной записи

консоли:

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). 

Может кто-нибудь мне точку в правильном направлении? (Как еще одна проблема, мы могли бы только сделать работу mnesia с записями из 3 или более полей в другой программе, поэтому я думаю, что где-то что-то не так)

ответ

4

Невозможно сохранить запись только с одним полем в стол Мнезии. Это упоминается в документации, хотя, возможно, не там, где вы будете выглядеть первым, но в описании mnesia:create_table/2:

  • {attributes, AtomList} список имен атрибутов для записей, которые должны заполнить таблицу. По умолчанию [key, val]. В дополнение к ключу в таблице должен быть хотя бы один дополнительный атрибут.

(курсив мой)

+1

Большое спасибо! Мы действительно посмотрели документацию и обыскали ее, но никто из нас не заметил этого предложения. Сначала у нас были проблемы с записями с двумя атрибутами, возможно, поэтому. Спасибо за помощь: D –

Смежные вопросы