Ошибка записи Mnesia завершается с ошибкой
Вопрос
Я определил запись с именем 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@).