在調(diào)用?cleos push action actionx時楞捂,出現(xiàn)
Error 3050003: eosio_assert_message assertion failure?
Error Details:?
assertion failure with?message: read?
只要在actionx中出現(xiàn)對Table的迭代器訪問,就會出現(xiàn)這個錯誤提示
開頭幾次調(diào)用push? actionx是沒有問題的浩淘,然后一邊添加業(yè)務(wù)邏輯吮旅,一邊修改Table的數(shù)據(jù)結(jié)構(gòu)揖盘,直到出現(xiàn)了這個問題甩挫,懷疑與表結(jié)構(gòu)數(shù)據(jù)不一致有關(guān)吁断。
嘗試一:清空表數(shù)據(jù)天试,創(chuàng)建clear table的action然后調(diào)用之槐壳,
沒有驚喜,push action clear 本身就會觸發(fā)這個錯誤喜每,嘗試失敗务唐。
嘗試二:刪除合約
cleos -uhttp://jungle2.cryptolions.io:80 set contract?myaccount ../mycontract?--clear
表成功刪除,但調(diào)用push action actionx錯誤仍然存在带兜。
可能是TABLE的錯誤太嚴(yán)重了枫笛,只好用另外一個測試賬戶重新發(fā)布合約
然后再調(diào)用合約的 actions,此錯誤不再出現(xiàn)刚照。
經(jīng)驗(yàn):在修改表的數(shù)據(jù)結(jié)構(gòu)之前刑巧,需要先調(diào)用erase刪除以前的表結(jié)構(gòu)及數(shù)據(jù),這之后才可調(diào)用emplace,push_back等增加數(shù)據(jù)條目无畔。