mnesia initialization

Karlo Kuna kuna.prime@REDACTED
Fri Nov 8 19:29:10 CET 2019


Thank you once again,

I really don't understand why it is happening but I have found a solution.
i am initializing node simply by -name name and then everything works as
expected and cannot get connection error goes away




On Fri, Nov 8, 2019 at 6:59 PM I Gusti Ngurah Oka Prinarjaya <
okaprinarjaya@REDACTED> wrote:

> Hi,
>
> >> but it seems that my problem is connected to "Cannot get connection id
> for node" when mnesia starts
> How you start mnesia? It's so rare to happen. it looks like auto-connect
> things.
>
> >> I'm having a node at name@REDACTED could that be the issue??
> That's strange, if you run node() in your erlang node shell you should
> get nonode@REDACTED Except, if you run your erlang node with command: erl
> -sname name@REDACTED
>
> Try to start your erlang node with better node name such: erl -sname
> node1@REDACTED where myhost mapped in `/etc/hosts` as 127.0.0.1
>
> So then combined with your mnesia needs, you should run erl -sname
> node1@REDACTED -mnesia dir "/home/yourusername/MY_MNESIA_PUT_HERE".
>
> >> However half of the time it destroys old table returning {atomic, ok}
> and another half it returns with already_exists.
> I think it's because you set your mnesia's directory at `/tmp/*` then your
> `/tmp/*` got auto-cleaned by the OS.
>
>
>
> Pada tanggal Jum, 8 Nov 2019 pukul 22.29 Karlo Kuna <kuna.prime@REDACTED>
> menulis:
>
>> thank you all,
>>
>> but it seems that my problem is connected to "Cannot get connection id
>> for node" when mnesia starts
>> I'm having a node at name@REDACTED could that be the issue??
>>
>> On Fri, Nov 8, 2019 at 6:46 AM I Gusti Ngurah Oka Prinarjaya <
>> okaprinarjaya@REDACTED> wrote:
>>
>>> Hi,
>>>
>>> Make sure to:
>>>
>>> 1. Start your erlang node with -mnesia dir
>>> "/path/to/where/you/want/to/put/mnesia"
>>> 2. Create the schema first
>>> 3. start mnesia by using command mnesia:start()
>>> 4. The create your tables
>>>
>>> >> I have a db_init function that initializes db so that if tables do
>>> not exist they are created (ram with disc_copies)
>>> If you want to do a table existence detection, you can do like the
>>> following:
>>>
>>> case catch mnesia:table(your_table_name, version) of
>>>   {{_, _}, []}
>>>     -> table_exists;
>>>
>>>   Fail when Fail =:=
>>> {'EXIT',{aborted,{no_exists,your_table_name,version}}}; Fail =:=
>>> {aborted,{no_exists,your_table_name,version}}
>>>     -> %% create your your_table_name table
>>> end
>>>
>>> Also, as i stated above, you have to create your schema first then start
>>> mnesia application. Example:
>>>
>>> case mnesia:create_schema([node()]) of
>>>   {error,{_,{already_exists,_}}} ->
>>>       io:format("Schema Already exists~n");
>>>
>>>     ok ->
>>>       io:format("Schema Created~n")
>>> end,
>>>
>>> application:ensure_started(mnesia),
>>>
>>> %% then init your tables here
>>> %%
>>> %%
>>> .
>>>
>>> Please read http://erlang.org/doc/apps/mnesia/Mnesia_chap2.html
>>>
>>> >> However half of the time it destroys old table returning {atomic, ok}
>>> and another half it returns with already_exists
>>> I'm not sure with this. But maybe i think your schema location was not
>>> consistent
>>>
>>> I suggest you to use rebar3 to manage your project.
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>> Pada tanggal Jum, 8 Nov 2019 pukul 07.57 Karlo Kuna <
>>> kuna.prime@REDACTED> menulis:
>>>
>>>> Hi,
>>>>
>>>> I have problem with mnesia initialization,
>>>>
>>>> I have a db_init function that initializes db so that if tables do not
>>>> exist they are created (ram with disc_copies). For example:
>>>>
>>>> db_init() ->
>>>>     mnesia:create_table(some_record,[{attributes, record_info(fields,
>>>> some_record)},
>>>>                                                                 {type,
>>>> bag}, {disc_copies, [node()]}]).
>>>>
>>>> I'm running this function on the app start to make sure the table
>>>> exists and is ready.
>>>> However half of the time it destroys old table returning {atomic, ok}
>>>> and another half it returns with already_exists. Also, this happens in the
>>>> regular fashion, if I have n starts of application, even starts would
>>>> destroy data and even wold keeps old data. I know that I am missing
>>>> something probably obvious here but if anyone has any insights on why is
>>>> this happening and how to fix it I would greatly appreciate it.
>>>>
>>>> Thank You,
>>>> Karlo.
>>>>
>>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20191108/53a136bd/attachment.htm>


More information about the erlang-questions mailing list