erlang mnesia
От: sv75  
Дата: 24.10.07 12:24
Оценка:
Битый час потратил, пытаясь написать программу сохраняющую запись в mnesia — и проиграл. Программка:
-module(m2). 
-export([start/0]). 
-record(test, {id, data}). 
start() -> 
 io:format("Node: ~w~n", [node()]), 
 io:format("schema: ~w~n", [mnesia:create_schema([node()])]), 
 ok = mnesia:start(), 
 io:format("create: ~w~n", [mnesia:create_table(test, 
 [ 
 {disc_copies, [node()]}, 
 {type, bag}, 
 {attributes, record_info(fields, test)}])]), 
 io:format("write: ~w~n", [mnesia:transaction( 
 fun() -> mnesia:write(#test{id = 1, data = "aaaa"}) end)]).

Запускаю.
$ erl -noshell -s m2 start -s init stop -sname node 
Node: 'node@seva-work' 
schema: ok 
create: {atomic,ok} 
write: {atomic,ok}

Работает. А еще раз:
$ erl -noshell -s m2 start -s init stop -sname node 
Node: 'node@seva-work' 
schema: {error,{'node@seva-work',{already_exists,'node@seva-work'}}} # да
create: {aborted,{already_exists,test}} # да
write: {aborted,{no_exists,test}}  # как это, куда она делась ?

Не подскажет ли кто, что я делаю не так?
добавил форматирование — Кодт
Re: erlang mnesia
От: Mikl Kurkov Россия  
Дата: 24.10.07 14:20
Оценка: +1
Здравствуйте, sv75, Вы писали:

S>Битый час потратил, пытаясь написать программу сохраняющую запись в mnesia — и проиграл. Программка:

S>...
S>$ erl -noshell -s m2 start -s init stop -sname node
S>Node: 'node@seva-work'
S>schema: {error,{'node@seva-work',{already_exists,'node@seva-work'}}} # да
S>create: {aborted,{already_exists,test}} # да
S>write: {aborted,{no_exists,test}} # как это, куда она делась ?

S>Не подскажет ли кто, что я делаю не так?


Похоже что мнезия еще не полностью стартовала во втором случае.
После mnesia:start() надо добавить
mnesia:wait_for_tables([test],infinity),
Должно заработать.

--
Mikl
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.