求大佬解答 Go语言 利用gorm 向mysql批量插入数据 代码与错误如下 怎么结局为

新手上路,请多包涵

package main

import (

"fmt"
"log"
"time"

"gorm.io/driver/mysql"
"gorm.io/gorm"

)

var db *gorm.DB

func init() {

dsn := "root:123456@tcp(127.0.0.1:3306)/golang_db?charset=utf8mb4&parseTime=True&loc=Local"
d, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
if err != nil {
    log.Fatal(err)
}
fmt.Printf("err: %v\n", err)
db = d

}

type User struct {

gorm.Model
Name     string
Age      int
Birthday time.Time

}

func creatTable() {

db.AutoMigrate(&User{})

}

var user = User{

Name:     "Tom",
Age:      20,
Birthday: time.Now(),

}

func insert1() {

result := db.Create(&user)
fmt.Printf("result.RowsAffected: %v\n", result.RowsAffected)
fmt.Printf("user.ID: %v\n", user.ID)

}

func insert2() {

db.Select("Name", "Age", "CreatedAt").Create(&user)

}

func insert3() {

var users = []User{{Name: "jinzhu1"}, {Name: "jinzhu2"}, {Name: "jinzhu3"}}
db.Create(&users)

}

func main() {

// creatTable()
// insert1()
// insert2()
insert3()

}

2022/01/26 20:01:01 [31;1me:/golangproject/ep1/pro1/morething/test_gorm_mysql_insert.go:54 [35;1mError 1292: Incorrect datetime value: '0000-00-00' for column 'birthday' at row 1
[0m[33m[15.856ms] [34;1m[rows:0][0m INSERT INTO users (created_at,updated_at,deleted_at,name,age,birthday) VALUES ('2022-01-26 20:01:01.895','2022-01-26 20:01:01.895',NULL,'jinzhu1',0,'0000-00-00 00:00:00'),('2022-01-26 20:01:01.895','2022-01-26 20:01:01.895',NULL,'jinzhu2',0,'0000-00-00 00:00:00'),('2022-01-26 20:01:01.895','2022-01-26 20:01:01.895',NULL,'jinzhu3',0,'0000-00-00 00:00:00')

阅读 3.4k
2 个回答
新手上路,请多包涵

试一下这个?
type User struct {

gorm.Model
Name     string
Age      int
Birthday time.Time `gorm:"type:timestamp;default:null"`

}

报错

Incorrect datetime value: '0000-00-00' for column 'birthday' at row 1

意思就是你的 birthday 的数据非法 ,说明 '0000-00-00 00:00:00' 不对,你把这个改成和前面的created_at个格式一样就好了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题