我在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}]
上述错误可能是什么原因?
答案 0 :(得分: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操作将使用记录语法打印结果。