ryanwinchester

ryanwinchester

Including :mnesia in release, without starting it

Initial Problem:

I want to use :mnesia in my application.

If I don’t explicitly include :mnesia in my release, it doesn’t exist.

example:

** (UndefinedFunctionError) function :mnesia.create_schema/1 is undefined
  (module :mnesia is not available)

However, if I add it to :extra_applications so that it gets included in my release, and let it start automatically and create the default schema, I get an error when trying to create tables:

:mnesia.create_table(MyRecord, 
  disc_copies: [node()],
  attributes: [:id, :foo, :bar]
)

with the error:

{:error, {:bad_type, MyRecord, :disc_copies, :nonode@nohost}}

I’m defining the directory in config.exs

config :mnesia, :dir, 'priv/data/mnesia'

And this works fine in dev when I don’t include :mnesia in my :extra_applications and I start it manually.

Solution I want to attempt:

I am trying to include :mnesia in my release, without it starting automatically, so I can start it myself.

I have tried adding it to :included_applications like so:

  def application do
    [
      mod: {MyApp.Application, []},
      extra_applications: [:logger, :runtime_tools],
      included_applications: [:mnesia]
    ]
  end

But this gives me an error

** (Mix) Undefined applications: [mnesia]

Anybody have any insight on how I can get this working?

I’ve been trying to get this working for several hours now and really starting to regret choosing mnesia.

Marked As Solved

danschultzer

danschultzer

Pow Core Team

Yeah, I wish documentation and error messages were better in Mnesia.

If Mnesia has already started with :extra_applications, you should run this instead of :create_schema/1:

:mnesia.change_table_copy_type(:schema, node(), :disc_copies)

Otherwise if you only load :mnesia with :included_applications, then you should run this:

:mnesia.create_schema([node()])
:mnesia.start()

After that, :mnesia.create_table/2 should work. Remember to also run :mnesia.wait_for_tables/2 to ensure that the node/cluster is ready.

And as I mentioned in the other thread, I believe the error with Mnesia missing from the release is because of a bug in Elixir 1.9.0. 1.9.1 should resolve that.

Where Next?

Popular in Questions Top

belgoros
I’m not a pro in using Regex and can’t figure out why the following behaviour happens, especially if we take into account the difference ...
New
Harrisonl
We have an ECS cluster with 4 services, where each task joins a single cluster, via discovery ECS discovery service. Currently when I de...
New
bsollish-terakeet
Credo is smart enough to check for (something like) this: assert length(the_list) == 0 with this response: Checking if an enum is empt...
New
New
dokuzbir
Hello, I am trying to convert my lists to string without losing brackets.For start i have 3 map. They look like these buyer = %{ id: ...
New
Phillipp
Hey, I have a NanoPi-M3 and try to install Elixir on their Ubuntu image. I followed the Raspberry Pi installation instructions from the ...
New
mathew4509
I have a list say x = ["23gh", "56kh", "97mh"] I would like to pass each element to Val in each iteration. Say, in iteration 1 -------...
New
vonH
When I run the Plug and I recompile I wind up having to use Ctrl C to quit iex and start again. Witht the help of rlwrap I can use the cu...
New
ovidiubadita
Hey all, I discovered Elixir and I love it. I always wanted to learn a functional programming and I intended to go for Haskell, but afte...
New
electic
Hi, I am new to Elixir. I am trying to use the DateTime component to insert a date into MySQL however the there seems to be no way to fo...
New

Other popular topics Top

Patoshizzle
After calling mix ecto.create I get this error: 17:00:32.162 [error] GenServer #PID<0.412.0> terminating ** (Postgrex.Error) FATAL...
New
yurko
Here are few pieces of (common) Linux knowledge that we use for reasonably small one server apps. We use Ubuntu but this should work for ...
New
openscript
Hello! Sorry for this astonishing simple question, but I’m really stuck. I try to set up the intellij-elixir plugin, but I don’t know ho...
New
sacepums
Hey guys. I'm new to elixir and im really stocked about it. But I ran into a bit of problem - I need to convert a date sting, for examp...
New
vertexbuffer
Hello, can anybody help here..? I have a list of players and I what to delete an element, but every for loop the list is reverting to ori...
New
vac
Hi, I'm quite new in Elixir and I'm trying to format a string to a PEM format. I have the certificate value like MIIDBTCCAe2...... and ...
New
alice
Hey, Just curious what are the main benefits of Elixir compared to Clojure? When is Elixir more useful than Clojure and vice versa? Th...
New
Qqwy
Original source of discussion: This topic on the Pragmatic Programmers' Functional Web Development with Elixir, OTP, and Phoenix forum. ...
New
AstonJ
by Lance Halvorsen Elixir and Phoenix are generating tremendous excitement as an unbeatable platform for building modern web application...
460 27162 124
New
siddhant3030
Hi, I have to write a raw query for one of my project. But till now I have used ecto queries and don’t have much experience writing raw ...
New

We're in Beta

About us Mission Statement