各种加字段手法测试
新老表差异 | 表内数据 | 升级手法 | CURD 结果 | 解决方案 |
---|---|---|---|---|
最后加一个加字段 | 无数据 | re-deploy | 加记录前查全表: OK 加记录(不带新字段): OK 加记录(带新字段): OK 加记录后查全表: OK 删除新数据行: OK 加记录后查全表: OK 指定查新数据行: OK |
|
最后加一个字段 | 有老数据 | re-deploy | 加记录前查全表: Fail 加记录(不带新字段): OK 加记录(带新字段): OK 加记录后查全表: Fail 指定查新数据行: OK 指定查老数据行: Fail 修改新数据行: OK 修改老数据行: Fail 删除新数据行: OK 删除老数据行: Fail |
|
最后加一个字段 | 有老数据 | clear; redeploy | 之前数据没了, 但之后一切 OK | option1: 先清数据, 再改表字段 |
最后加一个字段 | 有老数据 | 数据迁移, 较复杂, 请参考 | 数据保留, 且之后一切 OK | option2: 建新表结构, 建新表, 数据迁移, 改老表名, 再改新表名 |
方案
- 简单: 先清数据, 再改表字段
- 复杂: 建新表结构, 建新表, 数据迁移, 改老表名, 再改新表名
- 推荐: 将所有属性字段序列化成json格式后,保存到合约表中的一个字段中
- 推荐: 使用EOS 2.1版本的新功能,对象存储