我正在學習Elixir並需要一些幫助。我有一個簡單的應用程序,使用mnesia
(現在不是Amnesia
)。當我開始mnesia
我做的:在Elixir中處理測試和開發Mnesia數據庫
:mnesia.create_schema([node()])
:mnesia.create_table(Table, [attributes: [:id, :name]])
:mnesia.start
這將創建一個[email protected]
目錄。我想要的是至少有兩個不同的數據庫,一個用於測試,一個用於開發。我目前正在使用Mix.env
進行檢查。我計劃在每次我的應用程序停止時擦除測試數據庫並在每次啓動時創建它(使用start
和stop
方法)。
通過mnesia
創建的數據目錄中取二郎神虛擬機的名稱,這就是爲什麼我想我需要根據環境(:dev
,:test
或:prod
)來命名我的虛擬機。
這可能嗎?這是正確的方式嗎?
更新
我知道我可以選擇我的Mnesia數據庫的數據的存儲位置(謝謝你,瑪麗娜)。但是,當我指定「定製」目錄下,我有這種奇怪的行爲:
iex(1)> :mnesia.system_info()
===> System info in version {mnesia_not_loaded,[email protected],
{1486,66262,472243}}, debug level = trace <===
opt_disc. Directory <<"/my/custom/dir">> is NOT used.
use fallback at restart = false
running db nodes = []
stopped db nodes = [[email protected]]
:no
所以我可以看到,它知道我要存儲我的數據,但它在告訴我「不使用」。我不知道爲什麼......然後
iex(2)> :mnesia.create_schema([node()])
{:error, {:EXIT, :function_clause}}
失敗創建模式(當我不指定「定製」目錄下正常工作)。有任何想法嗎?
更新2
必須使用周圍的目錄路徑單引號(不知道爲什麼)
您可以通過定義目錄http://stackoverflow.com/questions/21150613訪問databa/IS-有-A-內置機制換我們對發射後的Mnesia功能於靈藥。行iex(2)>:應用程序。set_env(:mnesia,:dir,'sample') –
Thank you Maryna for your input,it helps,but still encounter issues ... – rmonjo
我看到更新,可能它會等待原子 –