我的小应用程序中有一个小错误,我真的不知道它可以来自哪里 . 所以我有4个结构,4个结构中的一个有几个一对一的关系 .
我连接到我的数据库并使用automigrate迁移我的4个结构并创建必要的表 . 问题是在这一点上,它没有在数据库和终端中创建任何东西我有这样的消息:(错误1060:'id'字段的名称已经在使用中)
我的代码 main.go
package main
import (
"fmt"
"github.com/jinzhu/gorm"
_ "github.com/jinzhu/gorm/dialects/mysql"
)
var db *gorm.DB
var err error
const (
mysupersecretpassword = "cr9ih_pvr9f9kc75n#bz&y%(@+^&1_#hr0^)-$kv%n3dh84$^w"
)
func main() {
db, err = gorm.Open("mysql", "root:root@/test?charset=utf8&parseTime=True")
if err != nil {
fmt.Println(err)
}
defer db.Close()
db.AutoMigrate(&User{}, &Ads{}, &Type{}, &Category{}, &Location{})
}
models.go
package main
import (
"github.com/jinzhu/gorm"
)
type User struct {
gorm.Model
Username string `json:"username"`
Email string `json:"email" form:"email"`
Password string `json:"password" form:"password"`
active bool `json:"active" gorm:"default:0"`
level bool `json:"level" gorm:"default:0"`
}
type Type struct {
gorm.Model
Name string `json:"name" form:"name"`
}
type Category struct {
gorm.Model
CatID uint `json:"category-parent" form:"category-parent" gorm:"default:0"`
Name string `json:"name" form:"name"`
}
type Location struct {
gorm.Model
Location string `json:"location" form:"location"`
}
type Ads struct {
gorm.Model
User User `json:"user"`
Type Type `json:"type" form:"type"`
Category Category `json:"category" form:"category"`
Title string `json:"title" form:"title"`
Content string `json:"content" form:"content"`
Location Location `json:"location" form:"location"`
}
等待答案可以让我走上正确的道路:)
2 回答
我猜你的一个表已经存在,并且该表中的
id
列与gorm.Model
想要创建的类型不同 . 我会弄清楚它是做什么的:并看到它失败的地方 . 然后,我会备份该表(以防万一),然后完全删除表,或者将id列重命名为
tmp_id
,看看automigrate是否修复了它,如果是,则删除tmp_id
列 .仅供参考我发现如果用户有权限问题,Gorm将不会记录正确的错误或任何错误 . 例如,当以root身份登录时,表存在,但是我登录的用户完全没有看到它,Gorm只是在没有创建表或改变它的情况下运行迁移(即使它是不同的模式)只是没有' t报告任何权限问题 .