我正在使用golang gorm框架 .

我需要设计一个表公司,它可能有多个子公司,一个公司可以是多个公司的子公司 .

我希望有类似的东西:

type Company struct {
    Id           uint32      `gorm:"primary_key" json:"id"`
    Name         string      `gorm:"size:128" json:"name"`
    SubCompanies []*Company  `gorm:"many2many:sub_company" json:"sub_companies"`
    CreatedAt    time.Time   `json:"created_at"`
    UpdatedAt    time.Time   `json:"updated_at"`
}

这是错误信息:seaguest @ DEV:〜/ Git / test / src / iotms / imsd $ go run imsd.go

(Error 1060: Duplicate column name 'company_id') 
[2017-01-16 00:08:38]  

(Error 1060: Duplicate column name 'company_id') 
[2017-01-16 00:08:38]  

(Error 1146: Table 'iotms.company' doesn't exist) 
[2017-01-16 00:08:38]  

(Error 1146: Table 'iotms.company' doesn't exist) 
[2017-01-16 00:08:38]  
2017-01-16 00:08:38.906 FATAL:10841:model/init.go:20: Init db company failed, Error 1146: Table 'iotms.company' doesn't exist
goroutine 1 [running]:
common/logger.(*Logger).log(0xc8201b8000, 0x415a04, 0x0, 0x0, 0xc820115b18, 0x2, 0x2)
    /home/seaguest/Git/lehuo/src/common/logger/log.go:282 +0x28e
common/logger.(*Logger).Fatal(0xc8201b8000, 0xc820115b18, 0x2, 0x2)
    /home/seaguest/Git/lehuo/src/common/logger/log.go:172 +0x50
common/logger.Fatal(0xc820115b18, 0x2, 0x2)
    /home/seaguest/Git/lehuo/src/common/logger/log.go:258 +0x41
iotms/model.InitModel(0xc82027e1e0, 0x0, 0x0)
    /home/seaguest/Git/test/src/iotms/model/init.go:20 +0x30b
main.main()
    /home/seaguest/Git/test/src/iotms/imsd/imsd.go:37 +0x52e

goroutine 17 [syscall, locked to thread]:
runtime.goexit()
    /home/seaguest/go/src/runtime/asm_amd64.s:1998 +0x1

goroutine 5 [chan receive]:
database/sql.(*DB).connectionOpener(0xc82018fc30)
    /home/seaguest/go/src/database/sql/sql.go:727 +0x45
created by database/sql.Open
    /home/seaguest/go/src/database/sql/sql.go:493 +0x33f

goroutine 34 [runnable]:
syscall.Syscall(0x1, 0x1, 0xc820422310, 0x6a, 0x6a, 0x6a, 0x0)
    /home/seaguest/go/src/syscall/asm_linux_amd64.s:18 +0x5
syscall.write(0x1, 0xc820422310, 0x6a, 0x70, 0xaf7b40, 0x0, 0x0)
    /home/seaguest/go/src/syscall/zsyscall_linux_amd64.go:1064 +0x5f
syscall.Write(0x1, 0xc820422310, 0x6a, 0x70, 0xc0deca, 0x0, 0x0)
    /home/seaguest/go/src/syscall/syscall_unix.go:180 +0x4d
os.(*File).write(0xc82002e010, 0xc820422310, 0x6a, 0x70, 0x0, 0x0, 0x0)
    /home/seaguest/go/src/os/file_unix.go:249 +0xaa
os.(*File).Write(0xc82002e010, 0xc820422310, 0x6a, 0x70, 0xe23340, 0x0, 0x0)
    /home/seaguest/go/src/os/file.go:136 +0x8a
log.(*Logger).Output(0xc820225220, 0x2, 0xc820228b60, 0x68, 0x0, 0x0)
    /home/seaguest/go/src/log/log.go:166 +0x37a
log.(*Logger).Println(0xc820225220, 0xc8203bec00, 0x4, 0x4)
    /home/seaguest/go/src/log/log.go:182 +0x6a
github.com/jinzhu/gorm.Logger.Print(0x7f0b50567690, 0xc820225220, 0xc82041aa40, 0x2, 0x2)
    /home/seaguest/Work/src/github.com/jinzhu/gorm/logger.go:88 +0xd48
github.com/jinzhu/gorm.(*Logger).Print(0xc820255990, 0xc82041aa40, 0x2, 0x2)
    <autogenerated>:121 +0xb6
github.com/jinzhu/gorm.(*DB).print(0xc8201ee460, 0xc82041aa40, 0x2, 0x2)
    /home/seaguest/Work/src/github.com/jinzhu/gorm/main.go:690 +0x91
created by github.com/jinzhu/gorm.(*DB).AddError
    /home/seaguest/Work/src/github.com/jinzhu/gorm/main.go:641 +0x274

exit status 1

然而它似乎不起作用,任何人都可以建议我该怎么做?

最好的祝福