使用xorm反转数据库获取表结构后,查询失败

我是用了xorm工具反转数据库获取表结构。
得到结构体如下

type UserUser struct {
    Id                     int       `xorm:"not null pk autoincr unique(id, sys_group_id, branch_id) INT(11)"`
    Nickname               string    `xorm:"default '' comment('用户名') VARCHAR(200)"`
    Email                  string    `xorm:"default '' comment('email') index VARCHAR(64)"`
    EmailIsavalible        int       `xorm:"not null default 0 comment('email是否验证') TINYINT(4)"`
    Mobile                 string    `xorm:"default '' comment('手机号') index CHAR(16)"`
    MobileIsavalible       int       `xorm:"not null default 0 comment('mobile是否验证') TINYINT(4)"`
    Password               string    `xorm:"not null default '' comment('密码') CHAR(64)"`
    Isavalible             int       `xorm:"not null default 0 comment('是否可用') TINYINT(4)"`
    Customerkey            string    `xorm:"not null default '' comment('用户key,自动生成') CHAR(64)"`
    Createdate             time.Time `xorm:"not null default 'CURRENT_TIMESTAMP' index TIMESTAMP"`
    Userip                 string    `xorm:"not null default '' VARCHAR(50)"`
    Level                  int       `xorm:"default 0 comment('0学员 1员工') INT(11)"`
    SysGroupId             int       `xorm:"comment('部门编号') unique(id, sys_group_id, branch_id) INT(11)"`
    CompanyId              int       `xorm:"default 0 unique(id, sys_group_id, branch_id) INT(11)"`
    CreateUserid           int       `xorm:"INT(11)"`
    CreateFlag             string    `xorm:"VARCHAR(255)"`
    CreateGroup            int       `xorm:"INT(11)"`
    Mobliephonefaceurl     string    `xorm:"comment('app人脸图片地址') VARCHAR(128)"`
    Mobliephonefacestatus  string    `xorm:"default '0' comment('预留状态0初始化1已预留2申请修改3审批通过(审批通过后并且预留通过后改为1状态)') CHAR(1)"`
    Mobliephonevoiceid     string    `xorm:"comment('app声纹信息id') VARCHAR(50)"`
    Mobliephonevoicestatus string    `xorm:"default '0' comment('预留状态0初始化1已预留2申请修改3审批通过(审批通过后并且预留通过后改为1状态)') CHAR(1)"`
    Pcfaceurl              string    `xorm:"comment('pc人脸图片地址') VARCHAR(128)"`
    Pcfacestatus           string    `xorm:"default '0' comment('预留状态0初始化1已预留2申请修改3审批通过(审批通过后并且预留通过后改为1状态)') CHAR(1)"`
    Pcvoiceid              string    `xorm:"comment('pc声纹信息id') VARCHAR(64)"`
    Pcvoicestatus          string    `xorm:"default '0' comment('预留状态0初始化1已预留2申请修改3审批通过(审批通过后并且预留通过后改为1状态)') CHAR(1)"`
    Mobliephonefacebyte    string    `xorm:"TEXT"`
    Pcfacebyte             string    `xorm:"MEDIUMTEXT"`
}```


现在我进行数据库查询,语句如下
engine,err = xorm.NewEngine("mysql","name:pwd@tcp(ip:port)/xxxxx?charset=utf8")
users := make([]model.UserUser, 0)
err = engine.Alias("t").Where("t.mobile=?", "123").Find(&users)

执行时会报错

field Id tag unique(id, cannot match ) charactor


请问是哪里写的有问题?
阅读 4.5k
3 个回答

也许应该更正 unique 条件里的列名

-Id  int  `xorm:"not null pk autoincr unique(id, sys_group_id, branch_id) INT(11)"`
+Id  int  `xorm:"not null pk autoincr unique(Id, SysGroupId, BranchId) INT(11)"`

我看你定义的表结构struct挺复杂的,如果使用ORM操作,可以参考GoFramegdb数据库ORM模块,同时支持通过map或者struct的形式来操作数据库:https://goframe.org/database/...

把 tag 里面的 unique(id, sys_group_id, branch_id) 删除掉,这个生成可能是出 bug 了。

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