我有一个OTP应用程序' myapp'这取决于mnesia。我应该在哪里拨打mnesia:create_schema/1
?
如果我将依赖项添加到myapp.app.src中的{applications,[]}
,则mnesia首先启动,我无法在myapp:start/2
中调用create_schema。在myapp.script / myapp.boot中调用它可能是有意义的,但是relx不允许我添加任何东西。
我不想让mnesia成为一个包含的应用程序。
编辑:我通过在relx配置中的应用程序中列出mnesia,但在mnesia:create_schema([node()]), application:ensure_all_started(mnesia, permanent)
中运行myapp:start/2
找到了解决方法。还有更好的方法吗?
答案 0 :(得分:2)
我也有这个问题。您应该在relx应用列表中包含{mnesia, load}
,在应用的start/2
回调中创建架构并启动mnesia。在{mnesia, [{dir, "YourMnesiaDBPath"}]}
中编写sys.config
也很不错。