Erlang:为 mnesia 指定工作目录?

Posted

技术标签:

【中文标题】Erlang:为 mnesia 指定工作目录?【英文标题】:Erlang: specifying a working directory for mnesia? 【发布时间】:2010-12-22 23:36:04 【问题描述】:

如何在不通过命令行传递“dir”参数的情况下为mnesia 指定工作目录?

换句话说,我可以在调用 `mnesia:start()' 之前为 mnesia 指定一个“工作目录”吗?

【问题讨论】:

【参考方案1】:

application:set_env(mnesia, dir, Dir).

【讨论】:

在 Erlang VM 中启动了一个 application_controller 进程。 application_controller:set_env 是这个过程的“API”。 application:set_env 是一个更抽象的调用,它只处理应用程序。难怪目前它只调用该 API。 回答问题:),我认为application_controller服务器和模块的存在应该被视为“实现细节”,因此正确的方法是使用应用程序模块。【参考方案2】:

除了此处其他响应中提到的方法调用之外,您还可以在系统配置文件或使用 -config 参数指定的 .app 文件中指定此方法。请参阅http://erlang.org/doc/design_principles/applications.html#id2270704 了解更多信息。这允许您将配置与代码分开并避免大量命令行标志。

【讨论】:

我有类似的情况......我不想从代码内部设置mnesia dir......您能否详细说明应如何使用应用程序的.app文件来设置环境其他应用程序的变量。我了解如何使用 .config 文件来完成此操作。例如我的应用程序文件是 test.app,它在“应用程序”部分列出了 mnesia,所以当我开始“测试”时,mnesia 会自动启动。如何使用 test.app 将“dir”值传递给 mnesia? 相关文档在这里:erlang.org/doc/man/app.html 特别是应用程序文件规范中的 env 元组。您可以使用 set_env() 设置的任何内容也可以在那里或命令行上设置。

以上是关于Erlang:为 mnesia 指定工作目录?的主要内容,如果未能解决你的问题,请参考以下文章

Erlang-如何在没有记录的情况下使用 Mnesia

与 Mnesia 保持关系完整性

Erlang Mnesia数据库迁移方法

Erlang:Mnesia:连续更新单个字段值

erlang r19里面的mnesia_ext

Erlang:创建磁盘模式