zoukankan      html  css  js  c++  java
  • mnesia怎样改动表结构

    mnesia创建的时候须要指定表record结构,假设定义的record结构改动了,就要更新数据的表结构。否则mnesia无法正常读取和写入数据。

    我们最開始是这样定义结构的

    -record(person, {name, age}).

    然后这样建表

    mnesia:create_table(person, [{disc_only_copies, nodes()}, {attributes, record_info(fields,person)}]).


    有一天我们改变了这个person结构

    -record(person, {name, age, money}).

    我们还能够读出mnesia的数据。可是不能匹配到如今的person结构了

    > mnesia:dirty_read(person, lucy).
    [{person,lucy,1}]

    并且我们无法再写入数据

    > mnesia:dirty_write(person, #person{name = lily, age = 2, money = 0}).
    ** exception exit: {aborted,{bad_type,#person{name=lily,age=2, money=0}}}
         in function  mnesia:abort/1 (mnesia.erl, line 309)

    可是我们还想要使用这个数据库。能够这样改动数据库

    Fun = fun(X)  ->
      case X of
          {person, Name, Age} ->
               {person, Name, Age, 0};
           _ ->
               X
         end
    end,
    NewAttr = [name, age, money],
    mnesia:transform_table(person, Fun, NewAttr, person).


    參考:

    http://blog.csdn.net/mycwq/article/details/30101659

  • 相关阅读:
    10-关于DOM的事件操作
    09-伪数组 arguments
    08-函数
    07-常用内置对象
    Django -- 2.http协议
    Django -- 1.web应用
    web前端 --- JavaScrip之BOM
    web前端 --- JavaScrip函数与对象
    web前端 --- JavaScrip基础
    web前端 --- CSS下篇
  • 原文地址:https://www.cnblogs.com/liguangsunls/p/6724501.html
Copyright © 2011-2022 走看看