[erlang-questions] [Q] How to delete a table during mnesia startup

Ladislav Lenart <>
Fri Aug 3 16:16:29 CEST 2007


Hello,

upon my application startup, I want to recreate a table from a given
(XML) configuration (i.e. delete it and then create). Mnesia is already
running at this time (it has been started from the boot script). To make
this work I ended up with the following code:
   mnesia:create_table(table, TableSpec),
   mnesia:wait_for_tables([table], Timeout),
   mnesia:delete_table(table),
   mnesia:create_table(table, TableSpec),
   mnesia:wait_for_tables([table], Timeout),

The first create_table/2 call returns {aborted, {already_exists, table}}
but it must be present, because otherwise:
  * first wait_for_tables/2 returns {timeout, [table]},
  * delete_table/1 returns {aborted, {no_exists, table}},
  * create_table/2 returns {aborted, {already_exists, table}} and
  * as a result the table is not deleted at all.

Is the above code a correct "solution" or am I doing something wrong?

Thanks in advance,

Ladislav Lenart




More information about the erlang-questions mailing list