[erlang-questions] Unable to create Mnesia table

Jay Doane jay.s.doane@REDACTED
Sat Oct 11 02:34:43 CEST 2014

What happens if you stop mnesia, create your schema, then restart mnesia?

On Fri, Oct 10, 2014 at 12:51 PM, Youngkin, Rich <
richard.youngkin@REDACTED> wrote:

> Just in case it's helpful to anyone... I've discovered the error of my
> ways (but I'm still looking towards a solution). This application used to
> start Mnesia directly after creating the schema (only on the initial
> startup of course). When creating the release I changed this by adding the
> mnesia application to the {applications, [...]} tuple in the app.src file.
> I did this to fix another problem caused by the Mnesia beam files not being
> included as part of the Erlang distro created by relx.  So in the release
> version, Mnesia is up and running before the schema is created. So I end up
> with a started Mnesia application without a schema, which of course is
> needed to define tables.
> So now on the my next question, how can I get the schema initialized if
> Mnesia is started prior to schema creation?  Some guy who gives crappy
> answers  :) had this post in StackOverflow that gave a partial answer -
> http://stackoverflow.com/questions/14083367/mnesia-doesnt-restart-with-supervisor.
> Is this really the preferred way of doing this? Seems like a bit of a hack
> to me (but I'm still a newbie, what do I know :>).
> Cheers,
> Rich
> On Wed, Oct 8, 2014 at 8:33 AM, Youngkin, Rich <
> richard.youngkin@REDACTED> wrote:
>> Hi all,
>> I recently converted an existing application to a release using relx.
>> After that the application isn't able to create any Mnesia tables. I can't
>> reproduce the problem in the Erlang shell (except by creating the table
>> before creating the schema). This is confusing because the app code creates
>> the schema prior to creating the table.
>> Here is the error:
>> 12:20:18.929 [info] Creating a new schema from scratch...
>> 12:20:18.929 [info] Mnesia started, creating tables...
>> 12:20:18.929 [info] Attempting to create table with TableDef
>> {pe_properties,{disc_copies,[{attributes,[key,value]},{record_name,pe_kvpair}]}}
>> 12:20:18.931 [error] gen_server pe_membership terminated with reason: bad
>> return value:
>> {error,{unable_to_init_schema,{aborted,{bad_type,pe_properties,disc_copies,'
>> prospero@REDACTED'}}}}
>> Here's the associated application code:
>>       error_logger:info_msg("Creating a new schema from scratch...~n"),
>>       application:set_env(mnesia, dir, "/var/data/prospero"),
>>       mnesia:create_schema([node()]),
>>       mnesia:start(),
>>       error_logger:info_msg("Mnesia started, creating tables...", []),
>>       case create_tables(pe_migrate:get_schema()) of
>> The line application:set_env(...) was added in case the Mnesia directory
>> wasn't getting created properly due to the move to a relx-built release. I
>> had a similar entry in vm.args that I may have gotten wrong (-mnesia dir
>> '"/var/data/prospero"'). Interestingly enough, I don't see any artifacts
>> associated with the schema creation in the Mnesia dir (e.g., schema.DAT).
>> I'm wondering if this is a clue as to what the cause is.
>> pe_migrate:get_schema()) returns a list of TableDefs. create_tables
>> iterates through that list creating the tables one at a time. The failure
>> occurs when attempting to create the first table.
>> Thanks, Rich
> _______________________________________________
> erlang-questions mailing list
> erlang-questions@REDACTED
> http://erlang.org/mailman/listinfo/erlang-questions
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20141010/70478400/attachment.htm>

More information about the erlang-questions mailing list