Мнезия писать не удается - PullRequest
       17

Мнезия писать не удается

4 голосов
/ 24 сентября 2008

Я определил запись с именем log. Я хочу создать таблицу мнезий с именем log_table. Когда я пытаюсь записать запись в таблицу, я получаю ошибку bad_type следующим образом:

(node1@kitt)4> mnesia:create_table(log_table, [{ram_copies, [node()]}, 
                                               {attributes, record_info(fields, log)}]).
{atomic,ok}

(node1@kitt)5> mnesia:dirty_write(log_table, #log{id="hebelek"}).
** exception exit: {aborted,{bad_type,#log{id = "hebelek"}}}
in function  mnesia:abort/1

Чего мне не хватает?

Ответы [ 3 ]

7 голосов
/ 24 сентября 2008

По умолчанию предполагается, что имя записи совпадает с именем таблицы.

Чтобы исправить это, вы должны либо назвать свою таблицу просто log, либо добавить опцию {record_name, log} в настройках таблицы (как вы сделали в своем исправлении).

Обычно рекомендуется, чтобы ваша запись и таблица назывались одинаково, это облегчает чтение и отладку кода. Затем вы также можете использовать функцию mnesia:write/1, используя только вашу запись в качестве единственного аргумента. Затем Мнезия выясняет, в какую таблицу поставить запись, посмотрев на название.

2 голосов
/ 24 сентября 2008

Я нашел это. Когда я изменил mnesia:create_table, позвоните на этот

mnesia:create_table(log_table, [{ram_copies, [node()]},
                                {record_name, log},
                                {attributes, record_info(fields, log)}]).

все работает нормально.

0 голосов
/ 24 сентября 2008

Как выглядит ваше определение записей журнала? Вы получаете ту же ошибку, если создаете новую таблицу с нуля (т.е. сначала удалите каталог Mnesia @).

...