数据库迁移
Casdoor使用xorm进行数据库访问。 Xorm 可以自动处理许多模式更改,但重命名列以及某些数据迁移必须 通过xorm migrate软件包手动完成。
:::注 有关模式操作的详细信息,请参阅xorm 文档。 :::
工作原理
Xorm 不会自动重命名列 要重命名字段(例如p_type → ptype),您需要添加一个迁移,该迁移会复制数据,然后删除旧列。
示例迁移:
migrations := []*migrate.Migration{
{
ID: "CasbinRule--fill ptype field with p",
Migrate: func(tx *xorm.Engine) error {
_, err := tx.Cols("ptype").Update(&xormadapter.CasbinRule{
Ptype: "p",
})
return err
},
Rollback: func(tx *xorm.Engine) error {
return tx.DropTables(&xormadapter.CasbinRule{})
},
},
}
m.Migrate()
此处的目标是将p_type</code>重命名为ptype:复制值到ptype</code>,然后删除p_type(已在其他地方处理)。 迁移ID存储在数据库中;在后续启动时,具有现有 ID 的迁移将被跳过。