使用Elixir备份Mnesia数据库

时间:2017-04-27 08:04:28

标签: erlang backup elixir mnesia

我有一个使用Mnesia数据库的Elixir应用程序。它工作正常,我可以存储和检索数据没有问题。我现在正在研究如何备份该数据库,并阅读文档,发现有一个:mnesia.backup函数可以完成我想要的工作。但是,当我打电话给它时,我得到:

:mnesia.backup("myfile") {:error, {:EXIT, {:error, :function_clause}}}

日志显示:

[error] Mnesia(:nonode@nohost): ** ERROR ** Failed to abort backup. :mnesia_backup::abort_write["myfile"] -> {:badrecord, :backup}

日志中的这一行令人困惑,因为我根本没有尝试中止备份。

:function_clause错误表明在某处传递了无效参数,因此我在线搜索以查看我应该传递给backup函数的内容(Erlang文档特别不清楚)并找到了这个问题这表明它应该是备份文件的名称:what is the proper way to backup/restore a mnesia database?

我看了一下mnesia代码,看看我是否能找到任何明显但没有快乐的东西。

有人可以告诉我,我做错了吗?

我在Ubuntu 16.04上使用Elixir 1.4.1和Erlang / OTP 19,我有一个基本的代码示例,可以在需要时演示这个问题。

1 个答案:

答案 0 :(得分:4)

:mnesia.backup接受一个charlist作为文件名,它在Erlang语法中用双引号编写,但在Elixir中用单引号编写。以下应该有效:

:mnesia.backup('myfile')

如果您了解Elixir语法,我强烈建议您通过此official Elixir crash course快速获取Erlang语法,反之亦然。