go - 使用自动迁移删除未使用的列

标签 go migration go-gorm

我已经开始为 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/

相关文章:

codeigniter - 如何运行 CodeIgniter 迁移?

mysql - 查询行中的最大值在 GoRM 中返回 "0"

postgresql - 如何使用gorm从项目B中的go1.12 Flex实例连接到项目A中的GCP PostgreSQL 11 DB

postgresql - 如何连接到 Google Cloud SQL PostgresQL

mysql - 数据库连接卡在 AWS Lambda 上

go - 如何从 RGB 颜色中获取十六进制颜色?

google-app-engine - Golang 将文件从 URL 保存到 AppEngine 中的 GCS Bucket

function - Golang - 将结构作为参数传递给函数

node.js - 如何在 Sequelize 迁移中创建关联?

migration - 将存储库从 Sonatype Nexus 1.9 迁移到 3.0