跳到主内容

数据库迁移

Casdoor使用xorm进行数据库访问。 Xorm 可以自动处理许多模式更改,但重命名列以及某些数据迁移必须通过xorm migrate软件包手动完成。

:::注 有关模式操作的详细信息,请参阅xorm 文档。 :::

工作原理

Xorm 不会自动重命名列 要重命名字段(例如p_typeptype),您需要添加一个迁移,该迁移会复制数据,然后删除旧列。

示例迁移:

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 的迁移将被跳过。