我试图使用gorm将一个 struct Named Teacher插入到SQLite数据库中,当我调用创建函数时,我收到一个错误:
INSERT INTO `teachers` (`name`,`department`,`password`) VALUES RETURNING `id`
panic: unsupported data
这是我的老师 struct :
type Teacher struct {
Id int `json:"id" db:"id" gorm:"primarykey"`
Name string `json:"name" db:"name"`
Department string `json:"department" db:"department"`
Password string `json:"-" db:"password"`
}
这就是我插入的方式:
data := Teacher{
Id: 0,
Name: "JohnDoe",
Department: "ComputerScience",
Password: "12312312312321",
}
DB.Create(&data)
编辑:
一些更多代码用于理解:
Main.go:
t := models.Teacher{
Id: 0,
Name: "JohnDoe",
Department: "ComputerScience",
Password: "12312312312321",
}
t.CreateTeacher()
teacher.go:
type Teacher struct {
Id int `json:"id" db:"id" gorm:"primarykey"`
Name string `json:"name" db:"name"`
Department string `json:"department" db:"department"`
Password string `json:"-" db:"password"`
}
func (teacher Teacher) CreateTeacher() error {
fmt.Println(teacher)
err := database.Insert(teacher)
if err != nil {
panic(err)
}
return nil
}
数据库.Go:
func ConnectDatabase() error {
var err error
DB, err = gorm.Open(sqlite.Open("./cisl-database.db"), &gorm.Config{})
if err != nil {
return err
}
return nil
}
func Insert(data interface{}) error {
fmt.Print(data)
err := ConnectDatabase()
if err != nil {
return err
}
DB.AutoMigrate(&data)
if err := DB.Create(&data).Error; err != nil {
return err
}
return nil
}