使用Gorm创建表的时候,uniqueIndex索引创建报错

Golang,使用Gorm连接数据,对结构体使用AutoMigrate创建表结构,当结构体中有“uniqueIndex”的标签的时候,第二次运行程序就会报索引重复错误。

以下是根据官方的示例代码改编,供参考

// 代码
package main

import (
“fmt”
“这里隐去包,新手不能发超过两个链接”
“os”
“time”
)

type User struct {
ID int gorm:"primarykey"
Name string gorm:"uniqueIndex;type:varchar(64)"
Age int
Birthday time.Time
}

// 将字符串转换为指定的编码格式
func transformString(str string, encoder transform.Transformer) string {
result, _, err := transform.String(encoder, str)
if err != nil {
return str
}
return result
}

func main() {
logrus.SetFormatter(&logrus.TextFormatter{})
logrus.SetLevel(logrus.DebugLevel)
logrus.SetOutput(os.Stdout)

dsn := "root:******@tcp(localhost:12881)/xxxdb?charset=utf8mb4&parseTime=True&loc=Local"

db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
if err != nil {
	fmt.Println(err.Error())
	return
}

db.AutoMigrate(&User{})

}

第二次运行报错:

2024/09/26 12:45:01 main.go:45 SLOW SQL >= 200ms
[316.430ms] [rows:-] SELECT column_name, column_default, is_nullable = ‘YES’, data_type, character_maximum_length, column_type, column_key, extra, column_comment, numeric_precision, numeric_scale , datetime_precision FROM information_schema.columns WHERE table_schema = ‘xxxdb’ AND table_name = ‘users’ ORDER BY ORDINAL_POSITION

2024/09/26 12:45:01 Error 1061 (42000): Duplicate key name ‘idx_users_name’

1 个赞

你好 你用的数据库 是ob数据库哪个版本的 看着报错是索引重名了