這個錯誤出如今數據庫查詢返回數據到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