为什么Mnesia不在磁盘上使用数据库?

时间:2016-05-05 15:33:36

标签: erlang mnesia

我有一个案例,我有一个Mnesia数据库,表格写入磁盘。当我停止我的应用程序然后重新启动它时,mnesia:info()告诉我

opt_disc. Directory "/my/directory/here" is NOT used.

和相应的mnesia:system_info(use_dir)为false。但是mnesia:system_info(目录)返回正确目录的名称,文件就在那里,它只是在一分钟前使用它们。有没有办法在启动时捕获它并告诉它使用磁盘中的现有数据?

如果我检查mnesia:table_info(schema,storage_type),它会告诉我ram_copies。如果我然后尝试mnesia:change_table_copy_type()它会写入磁盘,但最终会压缩我的所有数据。

2 个答案:

答案 0 :(得分:1)

您需要做的是将Mnesia的dir应用程序变量设置为类似

table {
  border-collapse: collapse;
}
td p {
  margin: 0;
  padding: 0;
}

您可以使用发布配置文件或命令行参数设置应用程序变量。

答案 1 :(得分:1)

这实际上是由于我自己的困惑。我们的部署过程正在消灭Mnesia目录,它在启动时重新创建。所以我没有看到它消失,但那就是为什么我的数据被压扁了。

use_dir为false,因为此时没有目录。然后,当我在架构上运行mnesia:change_table_copy_type()时,它正在创建该目录,但它没有数据。