Erlang - mnesia数据库的标准位置

Ken*_*son 3 erlang mnesia

是否有标准的地方将mnesia数据库放在erlang中?目前我将它放在priv目录中.

Fel*_*nge 6

默认情况下,Mnesia将Mnesia.<node name>在模拟器进程的当前目录中调用的子目录中创建模式.如果这不是你想要的,那么你需要做的就是将Mnesia的dir应用程序变量设置为类似的东西

application:set_env(mnesia, dir, "/path/to/db").
Run Code Online (Sandbox Code Playgroud)

至于放置数据库的位置:这取决于您的部署方案.由于应用程序变量也可以使用发布配置文件命令行参数进行设置,因此您可以延迟该决定,直到您发送(或安装在您自己的服务器上).要在生产中使用,/var/lib/<your application>/mnesia-<node name>应该使用像(在unix上)这样的标准目录.

为了玩游戏,我建议使用代码根目录下的专用目录(不是priv目录),并在应用程序的启动部分中设置该位置.在我的宠物项目中,我经常使用诸如此类的代码

Root = filename:absname_join(filename:dirname(?FILE), ".."),
application:set_env(mnesia, dir, filename:join(Root, "db")).
Run Code Online (Sandbox Code Playgroud)

正是出于这个目的.