[erlang-questions] Ridiculuous newbie mnesia question.

Kresten Krab Thorup <>
Sun Oct 24 23:57:04 CEST 2010


Looks like your node is called  (ie you did not specify -name option to the erl command) while your script expects it to be called ?

I'm no expert in mnesia, but what happens if you actually have nodes  and  running? 

Its obvious why the second create fails, but maybe you cannot delete because mnesia cannot find the named nodes?

Kresten

On 24/10/2010, at 23.38, "Jeffrey Rennie" <> wrote:

> I seem to be stuck in a state where I can't create a table because it
> exists, but I can't delete the table because it doesn't exist!
> 
> I searched the mnesia documentation, and I couldn't find a definition
> of the "Tab" arg passed to many mnesia functions.
> 
> Here's what I tried:
> 
> Eshell V5.7.5  (abort with ^G)
> 2> c(backgammon).
> {ok,backgammon}
> 5> c(backgammon).
> {ok,backgammon}
> 7> mnesia:start().
> ok
> 8> backgammon:init().
> {atomic,ok}
> 11> c(backgammon).
> {ok,backgammon}
> 12> backgammon:dumpfields().
> [player_turn,dice,board]
> 13> c(backgammon).
> {ok,backgammon}
> 14> backgammon:init().
> {aborted,{already_exists,backgammon_games}}
> 15> mnesia:info().
> ---> Processes holding locks <---
> ---> Processes waiting for locks <---
> ---> Participant transactions <---
> ---> Coordinator transactions <---
> ---> Uncertain transactions <---
> ---> Active tables <---
> schema         : with 2        records occupying 546      words of mem
> ===> System info in version "4.4.13", debug level = none <===
> opt_disc. Directory
> "c:/Users/jeff/code/code/scratch/erlang/" is NOT
> used.
> use fallback at restart = false
> running db nodes   = []
> stopped db nodes   = []
> master node tables = []
> remote             = [backgammon_games]
> ram_copies         = [schema]
> disc_copies        = []
> disc_only_copies   = []
> [] = [backgammon_games]
> [{,ram_copies}] = [schema]
> 3 transactions committed, 1 aborted, 0 restarted, 0 logged to disc
> 0 held locks, 0 in queue; 0 local transactions, 0 remote
> 0 transactions waits for other nodes: []
> ok
> %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
> %% BEGIN CONFUSING BIT
> 17> mnesia:delete_table(backgammon_games).
> {aborted,{no_exists,backgammon_games}}
> 18> backgammon:init().
> {aborted,{already_exists,backgammon_games}}
> 19>
> %% END CONFUSING BIT
> %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
> 
> 
> Here's my backgammon.erl:
> -module(backgammon).
> 
> -compile(export_all).
> 
> -include("backgammon.hrl").
> 
> create_tables(MnesiaNodes) ->
>    mnesia:create_table(backgammon_games,
>            [{attributes, record_info(fields, game_record)},
>             {ram_copies, MnesiaNodes}]).
> 
> init() ->
>    create_tables([, ]).
> 
> dumpfields() ->
>    record_info(fields, game_state).
> 
> ________________________________________________________________
> erlang-questions (at) erlang.org mailing list.
> See http://www.erlang.org/faq.html
> To unsubscribe; mailto:
> 


More information about the erlang-questions mailing list