首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用supervisor时,mnesia不会重新启动

使用supervisor时,mnesia不会重新启动
EN

Stack Overflow用户
提问于 2012-12-29 23:57:26
回答 1查看 454关注 0票数 0

我在与gen_server、主管和健忘症的合作中遇到了问题。我有一个supervisor:http://pastebin.com/8rkfrq7D,它触发了服务器模块,而服务器模块正在启动mnesia。我的问题是当我写

代码语言:javascript
复制
erl
c(superv).
superv:start_link().
//it opens fine
C^
erl
c(superv).
superv:start_link().
    ** exception exit: shutdown
//if i try again start_link() it is working

我来搞定。我删除了负责启动记忆的部分,它工作得很好,所以我希望即时退出(由ctrl+c)不会正确地关闭记忆。不幸的是,即使我调用mnesia:stop(),在quicking并再次调用start_link()之前,它也会返回异常退出。请帮我解决这个问题。

EN

回答 1

Stack Overflow用户

发布于 2012-12-30 06:28:31

代码语言:javascript
复制
application:start(mnesia).

在启动应用程序之前。发行版是一个自包含的Erlang系统,可以在外部机器上启动。然后,您希望生成一个版本,通常使用reltool,然后此版本将在启动my_application_name之前通过启动mnesia进行初始化。

rebar这样的工具可以帮助您维护您的应用程序和用于构建发行版的reltool.config文件。

请注意,Mnesia需要一个模式才能启动。一个常见的技巧是让您的发行版包含一个默认的空数据库,安装该数据库后,mnesias dir参数将指向该数据库。因此,如果您启动一个新生成的系统,它将有一个数据库可供启动。您可以通过重新安装空数据库来从头开始。有关如何做到这一点的提示,请查看mnesia中的FALLBACK.BUP

至于你的错误,你不能启动你的服务器两次。第一次运行时,它将自己注册到atom server下,因此当它已经在运行时,随后的重启将使其崩溃。如果在启用SASL应用程序的情况下启动Erlang,有时会得到提示。执行application:start(sasl)或运行erlang,如下所示:

代码语言:javascript
复制
erl -boot start_sasl
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14083367

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档