erlang - Mnesia 返回 {aborted, no_transaction}

标签 erlang mnesia

我有一个名为 person 的 Mnesia 表,使用以下记录定义:

-record(person, {id, firstname, lastname, phone}).

该表包含以下值:

    12  alen     dumas      97888888
    13  franco   mocci      55522225
    14  ali      othmani    44444449

我想检索最后一个 ID,在我的例子中是 14

我尝试:

test()->
    Key=mnesia:last(person).

但是当我测试这个函数时,我遇到了这个错误:

** exception exit: {aborted,no_transaction}
     in function  mnesia:abort/1

这是为什么呢?我能做什么呢?

最佳答案

错误消息异常退出:{aborted,no_transaction}非常清楚:该函数预计将在事务上下文中调用,而您的代码则不然。 如果不需要事务,可以使用 mnesia:dirty_last/1 代替。 请注意,如果表类型是ordered_set,则 mnesia:last/1 和 mnesia:dirty_last/1 都有意义。对于其他类型,没有定义明确的顺序。

关于erlang - Mnesia 返回 {aborted, no_transaction},我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14984865/

相关文章:

multithreading - Erlang 节点到节点消息传递吞吐量、超时和保证

erlang - 使用ets函数读取mnesia表(erlang)

erlang - 是否可以在集群中运行 Mnesia 而不进行复制

http - Web 服务器容忍高客户端轮询率 : Cowboy vs. Yaws Web 服务器

java - 使用 Java 或 Objective C 以外的方式创建 native 应用程序

Erlang:强制公开方法,为什么?

scala - 名称值/表达式保存在函数程序中的什么位置?

rabbitmq - 错误执行erlang迁移到另一个节点

erlang - ets `public` `named`表和 `local`和 `ram_copy` mnesia表有什么区别

web - Mnesia 在由 Yaws 运行时无法创建表,但在从 Erlang shell 运行时可以