Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Elixir中处理测试和开发记忆数据库_Elixir_Mnesia - Fatal编程技术网

在Elixir中处理测试和开发记忆数据库

在Elixir中处理测试和开发记忆数据库,elixir,mnesia,Elixir,Mnesia,我正在学习长生不老药,需要一些帮助。我有一个简单的应用程序,它使用mnesia(现在不是健忘症)。当我开始记忆时,我会: :mnesia.create_schema([node()]) :mnesia.create_table(Table, [attributes: [:id, :name]]) :mnesia.start 这将创建一个Mnesia。nonode@nohost目录。我想要的是至少有两个不同的数据库,一个用于测试,一个用于开发。我目前正在使用Mix.env检查这个问题。我计划在每

我正在学习长生不老药,需要一些帮助。我有一个简单的应用程序,它使用
mnesia
(现在不是
健忘症
)。当我开始记忆时,我会:

:mnesia.create_schema([node()])
:mnesia.create_table(Table, [attributes: [:id, :name]])
:mnesia.start
这将创建一个
Mnesia。nonode@nohost
目录。我想要的是至少有两个不同的数据库,一个用于测试,一个用于开发。我目前正在使用
Mix.env
检查这个问题。我计划在每次应用程序停止时删除测试数据库,并在每次启动时创建它(使用
start
stop
方法)

mnesia
创建的数据目录采用Erlang虚拟机的名称,这就是为什么我想我需要根据环境来命名虚拟机(
:dev
:test
:prod

这可能吗?这条路对吗


更新

我知道我可以选择我的mnesia数据库的数据存储位置(谢谢Maryna)。但当我指定一个“自定义”目录时,我有一个奇怪的行为:

iex(1)> :mnesia.system_info()
===> System info in version {mnesia_not_loaded,nonode@nohost,
                                {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   = [nonode@nohost] 
:no
创建模式失败(当我没有指定“自定义”目录时工作正常)。有什么想法吗


更新2


必须在目录路径周围使用单引号(不知道为什么)

为不同环境使用单独的
mnesia
数据库的最简单方法是在应用程序配置中指定
Mix.env
。您可以在
config.exs
中放置类似的内容:

config :mnesia, dir: 'mnesia/#{Mix.env}/#{node()}'

但是有一些重要的事情你需要注意:

  • 使用必须使用单引号而不是双引号
  • 数据库的父目录必须存在,否则将失败。(不指定自定义路径时不会失败的原因是,应用程序目录已存在)

您可以通过定义目录来访问databa。行iex(2)>:application.set_env(:mnesia,:dir,'sample')谢谢Maryna的输入,它有帮助,但仍然会遇到问题…我看到更新,可能,它正在等待atom
config :mnesia, dir: 'mnesia/#{Mix.env}/#{node()}'