Ridiculuous newbie mnesia question.

Jeffrey Rennie <>
Sun Oct 24 23:37:23 CEST 2010


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).


More information about the erlang-questions mailing list