TL; DR
gorm.Open
するときに &parseTime=true
パラメタをつけよう
問題
該当コード
var passedAuth AuthData
err := json.NewDecoder(r.Body).Decode(&passedAuth)
if err != nil {
fmt.Println(err)
return
}
var auth AuthData
db.First(&auth, &AuthData{UserID: passedAuth.UserID})
fmt.Printf("%+v\n", auth)
こうなって欲しかった
{Model:{ID:1 CreatedAt:2020-02-06 09:50:59 +0000 UTC UpdatedAt:2020-02-06 09:50:59 +0000 UTC DeletedAt:<nil>} UserID:hogehoge Password:hogehoge}
こうなった
{Model:{ID:1 CreatedAt:0001-01-01 00:00:00 +0000 UTC UpdatedAt:0001-01-01 00:00:00 +0000 UTC DeletedAt:<nil>} UserID: Password:}
IDしか取得できてない!
原因
よくログを見てみると...
sql: Scan error on column index 1, name "created_at": unsupported Scan, storing driver.Value type []uint8 into type *time.Time
教えてくれてた。無視しててごめん。
解決
見た感じ一般的なエラーっぽかったので、まるっとコピペしてググってみたらこの記事にたどり着いた。
Gormでunsupported Scan的なエラーが出た
どうやらgorm.Open
するときに &parseTime=true
パラメタを付けないとらしい。
該当箇所を見てみる。
db, err := gorm.Open("mysql", "root:admin@tcp(mysql:3306)/data_base?charset=utf8mb4")
ついてない。これだ。修正。。
db, err := gorm.Open("mysql", "root:admin@tcp(mysql:3306)/data_base?charset=utf8mb4&parseTime=true")
直った。すごい。