这个错误出如今数据库查询返回数据到Object的解析上。简而言之就是,go端写的struck字段数目和数据库返回的结果字段数目不匹配。数据库
相似状况,以上文的代码作类比。就是如方法 GetMailBoxAddrBuildingLink()。ui
贴代码.net
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 }
在实际过程当中,对须要进行解析的引用没有初始化,简称就是少了一行代码code
addr = &MailBoxAddress{}orm