EOSIO MySQL 插件 issue 2

文/robin

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。

[[email protected]][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;

0x04 小结


MySQL 插件目前不太成熟,还有很多坑,谨慎入坑。

–EOF–

版权声明:自由转载-非商用-非衍生-保持署名(创意共享4.0许可证)

标签: 区块链, 数据库, EOS

添加新评论