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

Gorm AutoMigrate主键重复问题:保留ID字段的解决方法

解决Gorm AutoMigrate生成重复主键的问题

问题场景

迁移如下User结构体:

type User struct {
    ID   uint 
    Name string
}

执行迁移代码后,报错提示表存在多个主键,生成的SQL为:

CREATE TABLE `users` (`id` integer PRIMARY KEY AUTOINCREMENT,`name` text,PRIMARY KEY (`id`))

可行解决方案

  • 显式指定ID字段的Gorm标签:给ID字段加上gorm:"primaryKey;autoIncrement"标签,明确告知Gorm这是唯一主键且自增,避免重复生成主键定义:
    type User struct {
        ID   uint `gorm:"primaryKey;autoIncrement"`
        Name string
    }
    
  • 升级Gorm版本:旧版本Gorm在处理SQLite的uint类型主键时存在兼容性bug,升级到最新稳定版(如v1.25+)可修复此类问题。
  • 手动指定SQLite主键类型:若升级版本后仍有问题,可显式指定字段类型为INTEGER,匹配SQLite自增主键规则:
    type User struct {
        ID   uint `gorm:"type:INTEGER;primaryKey;autoIncrement"`
        Name string
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 18:39:55