我已经开始为 Go 使用出色的库 GORM。自动迁移完美运行,但在文档中我阅读了注释 “它不会删除未使用的列来保护您的数据。”
我可以跳过这条规则吗?换句话说,我可以在 gorm 配置中添加/更改某些内容,以便有机会使用自动迁移删除未使用的列吗?
最佳答案
不,我不认为有一个简单的选择来做到这一点。
这是 AutoMigrate 源:https://github.com/go-gorm/gorm/blob/59730417aabd5b510d66d9d923d265a6fc0195a0/migrator/migrator.go#L83-L153
您需要枚举表上的所有列,检查它们是否存在,然后删除它们。
您还需要枚举现有的关系和索引,并在必要时删除它们(如果它们不存在)。
如果你最终写了那个,我想你可以自己写AutoMigrate
接受 gorm.Migrator
的函数界面并运行自动迁移。您可以使用 db.Migrator()
在现有代码中获取 Migrator 接口(interface)并将其传递给您的函数。也许有人在某处写过这样的函数!
关于go - 使用自动迁移删除未使用的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65646890/