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
相关产品推荐
相关产品推荐

