0

我在 Erlang mnesia 数据库中有以下小表。当我使用如下的dirty_select函数时:

mnesia:dirty_select(user, [{#user{id = '$1', name = martin}, [], ['$1']}]).

我得到错误:

* 1: record user undefined

用户表有一行,用户 id 作为主键,'martin' 作为用户名。当我使用以下命令时,它运行良好:

mnesia:dirty_read(user, 1).

输出是:

[{user,1,martin}]

上述错误的原因可能是什么?

4

1 回答 1

4

如果您在使用 erlang shell 时遇到此错误,则需要定义记录。记录是编译时构造,shell 无权访问它们的定义。

1> rd(user, {id, name}).
user
2> #user{id=1, name="foo"}.
#user{id = 1,name = "foo"}
3> mnesia:dirty_select(user, [{#user{id = '$1', name = martin}, [], ['$1']}]).
...

定义记录后,dirty_read 操作将使用记录语法打印结果。

于 2012-12-30T22:58:00.390 回答