EOSIO MySQL 外掛 issue 2

robinwen發表於2018-12-26

文/溫國兵

這是「區塊鏈技術指北」的第 41 篇文章。

如果對我感興趣,想和我交流,我的微訊號:Wentasy,加我時簡單介紹下自己,並註明來自「區塊鏈技術指北」,同時我會把你拉入微信群。

EOSIO MySQL 外掛 issue 2

題圖來自: © ChainONE / Original / chainon.io

0x00 背景


鏈上資料如何轉化為 API 友好的資料,這是一個很重要的話題。因為能夠轉化為 API 友好的資料,對於開發者而言,可以極大地提高效率。目前 EOS 生態有很多外掛,比如 MySQL 外掛、ES 外掛、Kafka 外掛等等。

筆者在測試環境部署了基於 kesar 寫的 MySQL 外掛,結果同步資料時發現有如下的異常。上文提到了 amount 欄位過短,來看看本文是什麼問題吧。

EOSIO MySQL 外掛 issue 2

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 外掛目前不太成熟,還有很多坑,謹慎入坑。

「區塊鏈技術指北」同名 知識星球,二維碼如下,歡迎加入。

區塊鏈技術指北

「區塊鏈技術指北」相關資訊渠道:

同時,本系列文章會在以下渠道同步更新,歡迎關注:

原創不易,讀者可以通過如下途徑打賞,虛擬貨幣、美元、法幣均支援。

  • BTC: 3QboL2k5HfKjKDrEYtQAKubWCjx9CX7i8f
  • ERC20 Token: 0x8907B2ed72A1E2D283c04613536Fac4270C9F0b3
  • PayPal: www.paypal.me/robinwen
  • 微信打賞二維碼

Wechat

–EOF–

版權宣告:自由轉載-非商用-非衍生-保持署名(創意共享4.0許可證)

相關文章