文/溫國兵
這是「區塊鏈技術指北」的第 41 篇文章。
如果對我感興趣,想和我交流,我的微訊號:Wentasy,加我時簡單介紹下自己,並註明來自「區塊鏈技術指北」,同時我會把你拉入微信群。
題圖來自: © ChainONE / Original / chainon.io
0x00 背景
鏈上資料如何轉化為 API 友好的資料,這是一個很重要的話題。因為能夠轉化為 API 友好的資料,對於開發者而言,可以極大地提高效率。目前 EOS 生態有很多外掛,比如 MySQL 外掛、ES 外掛、Kafka 外掛等等。
筆者在測試環境部署了基於 kesar 寫的 MySQL 外掛,結果同步資料時發現有如下的異常。上文提到了 amount 欄位過短,來看看本文是什麼問題吧。
0x01 解決
檢視 nodeos 日誌,可以發現如下異常。
terminate called after throwing an instance of 'soci::mysql_soci_error'
what(): Data too long for column 'public_key' at row 1 while executing "INSERT INTO accounts_keys(account, public_key, permission) VALUES (:ac, :ke, :pe) " with :ac="walletiphone", :ke="PUB_R1_81x8BXgDQGTWmcAaavfCDcVTTyzz1BeBYbje9yJomVMCJZbz86", :pe="owner".
複製程式碼
我們檢視錶結構,可以得知 public_key 長度為 53。
[root@localhost][eos]> DESC accounts_keys;
+------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+-------------+------+-----+---------+-------+
| account | varchar(12) | YES | MUL | NULL | |
| public_key | varchar(53) | YES | | NULL | |
| permission | varchar(12) | YES | | NULL | |
+------------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)
複製程式碼
我們嘗試將 public_key 改為 64,重新同步解決。
ALTER TABLE accounts_keys CHANGE COLUMN public_key public_key varchar(64) DEFAULT NULL;
複製程式碼
0x02 小結
MySQL 外掛目前不太成熟,還有很多坑,謹慎入坑。
「區塊鏈技術指北」同名 知識星球,二維碼如下,歡迎加入。
「區塊鏈技術指北」相關資訊渠道:
- 「區塊鏈技術指北」同名知識星球,t.xiaomiquan.com/ZRbmaU3
- 官網,chainon.io
- 官方部落格,blog.chainon.io
- 官方社群,bbs.chainon.io
- Telegram Channel,t.me/BlockchainA…
- Telegram Group,t.me/bcage
- Twitter,twitter.com/bcageone
- Facebook,www.facebook.com/chainone.or…
- 新浪微博,weibo.com/BlockchainA…
同時,本系列文章會在以下渠道同步更新,歡迎關注:
- 「區塊鏈技術指北」同名微信公眾號(微訊號:BlockchainAge)
- 個人部落格,dbarobin.com
- 知乎,zhuanlan.zhihu.com/robinwen
- 簡書,www.jianshu.com/c/a37698a12…
- Steemit,steemit.com/@robinwen
- Medium,medium.com/@robinwan
- 掘金,robinwen@juejin.im
- EOS LIVE,eos.live/user/robin
- 幣乎,bihu.com/people/2220…
原創不易,讀者可以通過如下途徑打賞,虛擬貨幣、美元、法幣均支援。
- BTC: 3QboL2k5HfKjKDrEYtQAKubWCjx9CX7i8f
- ERC20 Token: 0x8907B2ed72A1E2D283c04613536Fac4270C9F0b3
- PayPal: www.paypal.me/robinwen
- 微信打賞二維碼
–EOF–