You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Gorm迁移PostgreSQL时字符串列未生成的问题排查

问题原因与解决方案

这不是Gorm的Bug,是对Go语言字段可见性规则的误用导致的:

  • Go语言中,小写开头的结构体字段属于包私有成员,第三方包(比如Gorm)无法通过反射机制访问这些字段
  • Gorm依赖反射识别模型字段并生成数据库列,因此私有字段不会被处理,自然不会生成对应列

解决方法

将User模型中的username和password字段改为大写开头,让它们对外部包可见:

type User struct {
   gorm.Model
   Username string
   Password string
}

补充说明

  • Gorm默认会将大写开头的字段名转为蛇形命名(比如Username会生成数据库列username,Password生成password),完全匹配需求,无需额外标签
  • 如果其他模型也存在小写开头的字段,同样需要改成大写开头才能被Gorm识别并生成对应列
  • 修改后重新执行AutoMigrate即可生成缺失的列,无需删除重建表(Gorm会自动检测并添加字段)

内容的提问来源于stack exchange,提问作者True Seeker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 08:50:29