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

  • 相关阅读:
    ubuntu 12.04 install flash for firefox
    ubuntu 12.04 修改 grub 启动参数
    ubuntu 12.04 英文系统怎么调出 ibus输入法
    Ubuntu 12.04 临时禁用和启动面板
    git部署
    php 递归删除文件夹
    一‘php文件系统
    xml的解构与组装
    memcached的部署
    1,秒杀系统的设计
  • 原文地址:https://www.cnblogs.com/liguangsunls/p/6724501.html
Copyright © 2011-2022 走看看