Error 3050003: eosio_assert_message assertion failure 排錯過程
在呼叫 cleos push action actionx時,出現
Error 3050003: eosio_assert_message assertion failure Error Details: assertion failure with message: read
只要在actionx中出現對Table的迭代器訪問,就會出現這個錯誤提示

開頭幾次呼叫push actionx是沒有問題的,然後一邊新增業務邏輯,一邊修改Table的資料結構,直到出現了這個問題,懷疑與表結構資料不一致有關。
嘗試一:清空表資料,建立clear table的action然後呼叫之,

沒有驚喜,push action clear 本身就會觸發這個錯誤,嘗試失敗。
嘗試二:刪除合約
cleos -uhttp://jungle2.cryptolions.io:80 set contract myaccount ../mycontract --clear

表成功刪除,但呼叫push action actionx錯誤仍然存在。
可能是TABLE的錯誤太嚴重了,只好用另外一個測試賬戶重新發布合約

然後再呼叫合約的 actions,此錯誤不再出現。
經驗:在修改表的資料結構之前,需要先呼叫erase刪除以前的表結構及資料,這之後才可呼叫emplace,push_back等增加資料條目。