一个erlang VM可以读取另一个erlang VM写入mnesia的数据

时间:2019-01-10 16:03:04

标签: erlang elixir mnesia

我正在从一个erlang VM将数据写入Mnesia,现在我在同一台计算机上启动了另一个erlang VM,第二个VM可以读取第一个VM写入mnesia的数据。

2 个答案:

答案 0 :(得分:1)

要共享Mnesia表,节点必须是同一distributed Erlang system的一部分。

模式定义哪些节点包含数据库,请参见。 http://erlang.org/doc/apps/mnesia/Mnesia_chap3.html#define-a-schema

此处描述了Mnesia数据库复制:http://erlang.org/doc/apps/mnesia/Mnesia_chap5.html#distribution-and-fault-tolerance

您可以使用mnesia:set_master_nodes()定义在哪里找到表。

答案 1 :(得分:1)

当然可以,以下是一些基本方法:

  1. 启动两个节点-iex --name nodeA@127.0.0.1iex --name nodeB@127.0.0.1
  2. 从节点A的终端-Node.connect :"nodeB@127.0.0.1"
  3. 从节点A的终端-:mnesia.create_schema [node(), :"nodeB@127.0.0.1"]
  4. 对于节点A和节点B-:mnesia.start
  5. 从节点A的终端-create_table(Person, [attributes: [:id, :name]])
  6. 从节点B的终端-:mnesia.dirty_write({Person, 1, "John"})
  7. 现在,您可以通过基本选择-:mnesia.dirty_read({Person, 1})
  8. 从节点A获取节点B写入的信息。

参考: https://elixirschool.com/en/lessons/specifics/mnesia/# http://erlang.org/doc/apps/mnesia/