Golang Gorm 数据插入 MySQL 失败 Error 1054: Unknown column 'xx' in 'field list'

文章目录

    原因是,我 Struct 中定义了一个新字段,为了方便在接口返回数据时,能补充一个数据库中没有的信息。

    这导致在 Gorm 插入 MySQL 时报错,提示未知字段错误。

    插入时,忽略指定字段

    查了一下,发现 Gorm 有个字段标签的功能,可以方便的忽略特定字段:

    https://gorm.io/zh_CN/docs/models.html#%E5%AD%97%E6%AE%B5%E6%A0%87%E7%AD%BE

    -	忽略该字段,- 无读写权限
    

    甚至可以更细分的控制,读和写分别设置是否忽略。

    例如:

    type User struct {
      Name string `gorm:"-"`  // 通过 struct 读写会忽略该字段
    }
    

    Field: unsupported relations for schema MyTable

    但是有个地方需要注意,例如下面这个 Struct (用户开卡信息,里面有个 Agent 字段,代表代理商信息,通过 Preload 获取)

    type UserCard struct {
    	gorm.Model
    	UserId        int     // 客户 ID
    	Price         float64 // 购买时的价格
            AgentId       int     // 代理商 ID
    	Agent         Agent   `gorm:"-"` // 代理商信息。禁止写入是防止 insert 时报不存在字段的错误。
    }
    

    执行 Preload 时,报错:

    Agent: unsupported relations for schema UserCard

    原因是 Agent 被设置成了不可读/不可写。

    需要改成只读:

    Agent         Agent   `gorm:"->"`
    

    关于作者 🌱

    我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊,或者关注我的个人公众号“大象工具”, 查看更多联系方式