Mnesia has no access to create table in disc macOs dev mode

Hello, I have read many posts about disc problem in the forum, but I have still this problem:

I have no problem to create ram copy

 {:create_table, {:aborted, {:bad_type, MishkaAuth.User.Users, :disc_copies, :nonode@nohost}}}} 

I did this comment before creating a post:

my config file:

config :mnesia, dir: "/Users/shahryar/Desktop/D-Access/mnesia_db" # drwxr-xr-x 3 shahryar staff 96 Mar 22 15:04 mnesia_db 

My fields and mnesia name:

 @mnesia_tab __MODULE__ @mnesia_tab_fields [ :id, :full_name, :username, :email, :mobile, :password_hash, :unconfirmed_email, :unconfirmed_mobile, :roles, :scopes, :devices, :status, :inserted_at, :updated_at ] 

And the function I create a disc_copies table

def start_mnesia() do :mnesia.stop() :mnesia.create_schema() |> IO.inspect(label: "Mnesia schema start of user ====>") :mnesia.start(:app) |> IO.inspect(label: "Application start of user ====>") case :mnesia.create_table(@mnesia_tab, type: :set, disc_copies: [Node.self()], attributes: @mnesia_tab_fields, index: [:username, :email, :mobile], record_name: @mnesia_tab, storage_properties: [ets: [{:read_concurrency, true}, {:write_concurrency, true}]] ) do {:atomic, :ok} -> :ok {:aborted, {:already_exists, @mnesia_tab}} -> :ok any -> {:error, {:create_table, any}} end |> IO.inspect(label: "Creating table ---->") :mnesia.wait_for_tables([@mnesia_tab], :timer.seconds(15)) |> IO.inspect(label: "Mnesia wait for tables start of user ====>") end 

I am using mac os and dev mode with iex -S mix phx.server

Please help me to fix this issue, 3 or 4 years ago I fixed it, but I can not remember now :frowning:

Thank you in advance

I remove my custom path and it works, but I dont know why i can not set a dir for mnesia

for example if i set a path:

Application.put_env(:mnesia, :dir, "/Users/shahryar/Desktop/D-Access/mnesia_db") 

or

:mnesia.stop() Application.put_env(:mnesia, :dir, "/Users/shahryar/Desktop/D-Access/mnesia_db") 

after that call

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

It returns {:error, {:EXIT, :function_clause}}

I do not know why

Update

use this :rage: :rage: :rage: :rage: :rage: :rage:

Application.put_env(:mnesia, :dir, mnesia_dir |> to_charlist) 
1 Like

:wink: :smile: :wink: :smile:
Yes, Mnesia is an old Erlang tool and in Erlang strings are charlists. That’s the way it is.

2 Likes

Yes, Thank you, it is as you say sir. But I went through a very hard way to remember that :joy: more than 5 hours :face_with_spiral_eyes: