Ошибка записи Mnesia завершается с ошибкой

StackOverflow https://stackoverflow.com/questions/126109

  •  02-07-2019
  •  | 
  •  

Вопрос

Я определил запись с именем log.Я хочу создать таблицу mnesia с именем 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

Что я упускаю из виду?

Это было полезно?

Решение

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

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

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

Другие советы

Я нашел это.Когда я изменился mnesia:create_table призыв к этому

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top