erlang - 使用 Elixir 备份 Mnesia 数据库

标签 erlang backup elixir mnesia

我有一个使用 Mnesia 数据库的 Elixir 应用程序。它工作正常,我可以毫无问题地存储和检索数据。我现在正在研究如何备份该数据库,并且通读了文档,发现有一个 :mnesia.backup 函数可以执行我想要的操作。但是,当我调用它时,我得到:

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

日志显示:

[错误] Mnesia(:nonode@nohost): ** 错误 ** 无法中止备份。 :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,我有一个基本代码示例可以在需要时演示问题。

最佳答案

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

:mnesia.backup('myfile')

我强烈建议您阅读此 official Elixir crash course如果您了解 Elixir 语法,则可以快速掌握 Erlang 语法,反之亦然。

关于erlang - 使用 Elixir 备份 Mnesia 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43652019/

相关文章:

erlang 关于套接字的一般问题

python - 备份文件脚本

php - 如何在 PHP 中将 MySQL 数据库备份到文件?

android 1.5,以编程方式将歌曲从/sd卡/歌曲复制到/sd卡/备份

erlang - 为什么 "cast"这个词用于处理 GenServer 中的异步消息?

erlang - 如何在 Elixir 中将数字转换回字符串?

elixir - elixir中的make_ref()函数有哪些用法?

erlang - 为什么 filelib :is_dir and filelib:is_regular functions doesn't work properly with files and folder that contain blank space?

logging - RabbitMQ SASL 日志记录

erlang - 以编程方式使用模式匹配