[erlang-questions] Ridiculuous newbie mnesia question.

Ulf Wiger ulf.wiger@REDACTED
Wed Oct 27 09:04:06 CEST 2010


On 27 Oct 2010, at 05:37, Jeffrey Rennie wrote:

> Thank you for your patience.  I still haven't escaped from this wet paper
> bag:
> 
>> Looking at the mnesia:info() output, there are a couple of things
>> to note.
>> 
>> 1. 'running db nodes = [emacs@REDACTED]' means that while a@REDACTED
>>   and b@REDACTED might be running at the erlang level, perhaps even
>>   with mnesia runnin, they are not connected to emacs@REDACTED
>> 
> 
> Why aren't they connected?  How do I connect them?  I can ping them (see
> below.)


Use the extra_db_nodes parameter for the nodes that do not have a persistent
copy of the schema.

For example, if you have nodes A, B, and C, where A and B have a persistent
schema, you would initially create the schema from either A or B:

mnesia:create_schema([A,B]).

...making sure that both nodes A and B are reachable at the time.

Then when starting mnesia on C, you can either do this:

mnesia:start([{extra_db_nodes,[A,B]}])

or add it to the erl command line:

erl -sname c -mnesia extra_db_nodes \[a@REDACTED,b@REDACTED\]

note the shell-related escaping issues. If your node names have special
characters, you have to include the single quotes and escape them too.

You can also create a sys.config file, where you insert application environment
variables:

sys.config:
[{mnesia, 
   [ {extra_db_nodes, [a@REDACTED, b@REDACTED]} ]
 }].

then start Erlang with erl -sname c -config sys

The extra_db_nodes parameter tells mnesia where to go and find the 
persistent schema, so you would usually include all nodes that are known
to have a persistent schema in the list.

BR,
Ulf W

Ulf Wiger, CTO, Erlang Solutions, Ltd.
http://erlang-solutions.com





More information about the erlang-questions mailing list