go-xorm报错(expect \d+ desination arguments in Scan,but 1)

错误解释

这个错误出现在数据库查询返回数据到Object的解析上。简而言之就是,go端写的struck字段数目和数据库返回的结果字段数目不匹配。

我犯的错

类似情况,以上文的代码做类比。就是如方法 GetMailBoxAddrBuildingLink()

贴代码

func GetMailBoxAddrBuildingLink(engine *xorm.Engine, addr string, num int64,buildingAddr string) (addr *MailAddrBuildingLink ,had bool,err error){
    addr = &MailBoxAddress{}    //引用实例初始化
    has,err = engine.Table("mailboxes").Alias("box").Select("box.*, mailbuilding.addr,buildings.*,links.*").
        Join("INNER",[]string{"buildings","mailbuilding"},"box.building_id = mailbuilding.id").
        Join("INNER","links","box.id = links.mailbox_id").
        Join("INNER","buildings","links.building_id = buildings.id").
        Where("mailbuilding.addr = ?",addr).
        And("box.num = ?",num).
        And("buildings.addr = ?",buildingAddr ).Get(addr)
    if err !=nil{
        err = fmt.Errorf("GetMailBoxAddrBuildingLink:%v",err)
    }
    return
}

在实际过程中,对需要进行解析的引用没有初始化,简称就是少了一行代码

addr = &MailBoxAddress{}

猜你喜欢

转载自my.oschina.net/u/3703365/blog/1818272