2014-04-22 97 views
1

我想從Erlang shell創建mnesia表。從mnesia幫助文檔複製下面的語法,我得到了錯誤和相同的錯誤。erlang mnesia創建表錯誤

mnesia:create_table(employee, 
    [{attributes, record_info(fields, employee)}]). 

得到了錯誤

record employee undefined

嘗試各種組合,得到同樣的錯誤。 mnesia已經開始了。

+0

記錄 '員工' 必須定義。你有沒有聲明? –

回答

1

你可以在erlang shell中試試 rd(employee, {emp_no, name, salary, sex, phone, room_no}).

rd(RecordName, RecordDefinition) Defines a record in the shell. RecordName is an atom and RecordDefinition lists the field names and the default values. Usually record definitions are made known to the shell by use of the rr commands described below, but sometimes it is handy to define records on the fly.

請訪問以下鏈接:http://www.erlang.org/doc/man/shell.html

+0

謝謝@BlackMamba。這工作。你能指點我有關這方面的任何文件嗎?目前我指的是這個http://www.erlang.org/doc/apps/mnesia/Mnesia_chap2.html,我想這是erlang mnesia的官方文檔。 –

+0

@ RajanR.G我修改了答案。 – BlackMamba

4

您需要先定義記錄employee,然後才能對其執行record_info。在shell中使用可以使用rr(FileName).命令,該命令將查找文件中的所有記錄定義並記住它們。在模塊中,您可以直接在模塊中定義記錄,也可以包含一個包含記錄定義的文件。

必須在shell中進行這種特殊處理的原因是,記錄純粹是編譯時功能,因此記錄定義並不真正「存在」任何地方。

編輯: 如果你想直接在Shell中定義的記錄,那麼你不能使用標準-record(...).語法。這隻在模塊中有效。 shell將此視爲對record/2函數的調用。您需要使用rd shell命令。它會成爲你的情況:

3> rd(employee, {emp_no, name, salary, sex, phone, room_no}). 
employee 
4> record_info(fields, employee). 
[emp_no,name,salary,sex,phone,romm_no] 
5> 

然後record_info的作品。如果您已經在文件中有記錄定義,則使用shell rr(File).命令,因爲它更容易。我認爲。

+0

是的,我嘗試使用「-record定義記錄(職工,{EMP_NO, 名, 工資, 性別, 電話, room_no})。 '但我得到的響應'異常錯誤:undefined shell命令記錄/ 2' –

+0

檢查編輯,看看如何做到這一點。 – rvirding