go-ozzo / ozzo-dbx

A Go (golang) package that enhances the standard database/sql package by providing powerful data retrieval methods as well as DB-agnostic query building capabilities.
MIT License
634 stars 90 forks source link

ModelQuery.Insert() will panic when primary key is uint #50

Closed darasion closed 6 years ago

darasion commented 7 years ago

test code(dbx.go):

package main

import (
        "github.com/go-ozzo/ozzo-dbx"
        _ "github.com/go-sql-driver/mysql"
)

type Foo struct {
        ID   uint
        Name string
}

func main() {
        db, _ := dbx.Open("mysql", "root:12345@tcp(127.0.0.1:3306)/dbx")
        foo := Foo{
                Name: "asdf",
        }
        db.Model(&foo).Insert()
}

go run dbx.go panics:

panic: reflect: call of reflect.Value.SetInt on uint Value

goroutine 1 [running]:
reflect.Value.SetInt(0x608100, 0xc42000c400, 0x187, 0x6)
        /.../go/src/reflect/value.go:1423 +0x135
github.com/go-ozzo/ozzo-dbx.(*ModelQuery).Insert(0xc42009e410, 0x0, 0x0, 0x0, 0xc420088200, 0x0)
        /.../src/github.com/go-ozzo/ozzo-dbx/model_query.go:81 +0x300
main.main()
        /.../dbx.go:18 +0xe2
exit status 2

go version: go version go1.9 linux/amd64

kustov-an commented 6 years ago

I submitted a pull request addressing this issue #52