升级说明

WeBASE-Node-Manager升级的兼容性说明,请结合WeBASE-Node-Manager Changelog进行阅读

v1.2.2

国密支持说明

国密版FISCO-BCOS与非国密版不可互通,同理,WeBASE组件的国密与非国密也不可互通,因此如果需要切换到国密版,需要重新建链与搭建WeBASE平台

可根据WeBASE一键部署重新搭建国密的FISCO BCOS + WeBASE平台

详细子系统的国密参数设置可参考FISCO-BCOS 国密支持WeBASE-Node-Manager 国密支持WeBASE-Front 国密支持

  1. 初始化数据修改:数据表的tb_method默认数据需要替换为国密版默认数据,可参考项目中scripts/gm中的webase-dml-gm.sql中的第5项进行数据初始化;

兼容性说明:中英文支持,优化部分功能

  1. 初始化数据修改:数据表tb_alert_rule默认数据支持中英文告警,可结合项目中scripts/webase-dml.sql第6项进行数据更新;
  2. 数据表字段增加:数据表tb_front增加一列client_version,用于记录节点版本与是否为国密;
  3. 数据表字段增加:动态增加的数据表tb_trans_hash_x增加一列trans_number,用于记录交易数;该更改无法与前一版本兼容;如需升级v1.2.2,可根据下文将getCountByMinMax()方法替换为原来的getCount()方法

升级中英文告警操作说明

登陆mysql后,进入到相应database中,以webasenodemanager的database为例;

  1. mysql -uroot -p123456
  2. // mysql 命令行
  3. mysql> use webasenodemanager;

可以参考WeBASE-Node-Manager v1.2.2源码中的webase-dml.sql

  • 修改tb_alert_rule的默认数据:
  1. // 删除原有数据
  2. mysql> delete * from tb_alert_rule where 1=1;
  3. // 插入新的中英文数据
  4. ---- add node status alert rule template
  5. INSERT INTO `tb_alert_rule`(`rule_name`,`enable`,`alert_type`,`alert_level`,`alert_interval_seconds`,`alert_content`,`content_param_list`,`create_time`,`modify_time`) VALUES ('节点异常告警/Node Exception', 0, 1, 1, 3600, '{nodeId}节点异常,请到“节点管理”页面查看具体信息 / Node: {nodeIdEn} node status exception,please check out in \"Node Management\"', '[\"{nodeId}\", \"{nodeIdEn}\"]', '2019-10-29 20:02:30', '2019-10-29 20:02:30');
  6. ---- add audit alert rule template
  7. INSERT INTO `tb_alert_rule`(`rule_name`,`enable`,`alert_type`,`alert_level`,`alert_interval_seconds`,`alert_content`,`content_param_list`,`create_time`,`modify_time`) VALUES ('审计异常告警/Audit Exception', 0, 2, 1, 3600, '审计异常:{auditType},请到“交易审计”页面查看具体信息 / Audit alert: {auditTypeEn},please check out in \"Transaction Audit\"', '[\"{auditType}\", \"{auditTypeEn}\"]', '2019-10-29 20:02:30', '2019-10-29 20:02:30');
  8. -- add cert alert rule template
  9. INSERT INTO `tb_alert_rule`(`rule_name`,`enable`,`alert_type`,`alert_level`,`alert_interval_seconds`,`alert_content`,`content_param_list`,`create_time`,`modify_time`) VALUES ('证书有效期告警/Cert Validity Exception', 0, 3, 1, 3600, '证书将在{time}过期,请到“证书管理”页面查看具体信息 / Cert validity exception:invalid at {timeEn},please check out in \"Cert Management\"', '[\"{time}\", \"{timeEn}\"]', '2019-10-29 20:02:30', '2019-10-29 20:02:30');

数据表字段增加-tb_front

  • 获取Front的IP与端口,登陆mysql同上操作
  1. mysql> select * from tb_front;
  2. +----------+----------------------------------------------------------------------------------------------------------------------------------+------------+------------+--------+---------------------+---------------------+----------------+
  3. | front_id | node_id | front_ip | front_port | agency | create_time | modify_time | client_version |
  4. +----------+----------------------------------------------------------------------------------------------------------------------------------+------------+------------+--------+---------------------+---------------------+----------------+
  5. | 500001 | b44c4f713b40b67ed2f9dae2ef208808b7f31112efe1a822de046604fe0bbdffdf46b7c0cf1ca9aa468752d514958cb603670a6d345c78faff6e69d825e851b8 | 127.0.0.1 | 5002 | agency0 | 2019-12-23 17:57:35 | 2019-12-23 17:57:35 | 2.1.0 gm |
  6. +----------+----------------------------------------------------------------------------------------------------------------------------------+------------+------------+--------+---------------------+---------------------+----------------+
  7. 1 row in set (0.00 sec)
  • 获取相应Front的节点版本:通过访问WeBASE-Front的front_ip:front_port/{groupId}/web3/clientVersion接口获取节点版本FISCO-BCOS Version
  1. // 获取clientVersion
  2. curl http://front_ip:front_port/WeBASE-Front/1/web3/clientVersion
  3. // response:
  4. {
  5. ...
  6. "Chain Id": "1",
  7. "FISCO-BCOS Version": "2.1.0 gm",
  8. ...
  9. }
  • tb_front增加client_version一列
  • 更新其数据值为上面获取的FISCO-BCOS Version值,如国密节点2.1.0 gm
  1. mysql> alter table tb_front add column client_version varchar(32) NOT NULL COMMENT '节点版本(国密/非国密)';
  2. mysql> update tb_front set client_version='2.1.0 gm' where front_id='{front_id}';

数据表字段增加-tb_trans_hash_xx

  • 更新由TableService动态生成的数据表tb_trans_hash_xx的字段:该更改无法与前一版本兼容;

如需升级v1.2.2,可将代码中使用TransHashMapper/getCountByMinMax()方法替换为原来的getCount()方法

  1. package com.webank.webase.node.mgr.transaction;
  2. ...
  3. public Integer queryCountOfTranByMinus(int groupId)
  4. throws NodeMgrException {
  5. ...
  6. try{
  7. ...
  8. // getCount(String tableName,TransParam transParam);
  9. Integer count = transHashMapper.getCountByMinMax(tableName);
  10. ...
  11. }
  12. ...
  13. }

v1.2.1

兼容性说明:增加邮件告警功能

  1. 数据表修改:增加了tb_mail_server_config邮箱服务器配置表(邮箱服务配置),tb_alert_rule告警规则表(告警类型配置),tb_alert_log告警日志表,可通过项目中scripts/webase-ddl.sql进行数据表初始化;
  2. 初始化数据修改:邮件告警功能的默认数据需要通过项目中scripts/webase-dml.sql的6, 7项进行数据初始化;

操作说明:

登陆mysql后,进入到相应database中,以webasenodemanager的database为例;

  1. mysql -uroot -p123456
  2. // mysql 命令行
  3. mysql> use webasenodemanager;

可以参考WeBASE-Node-Manager v1.2.1源码中的webase-ddl.sql与webase-dml.sql

  • 执行tb_alert_rule, tb_mail_server_config, tb_alert_log,建表操作
  1. // tb_alert_rule表
  2. mysql> CREATE TABLE IF NOT EXISTS tb_alert_rule (
  3. rule_id int(11) NOT NULL AUTO_INCREMENT COMMENT '告警规则的ID',
  4. rule_name varchar(50) NOT NULL COMMENT '告警规则的命名',
  5. enable tinyint(4) DEFAULT 0 NOT NULL COMMENT '是否启用规则, 0:false, 1:true',
  6. alert_type tinyint(4) NOT NULL COMMENT '告警规则的类型, 1-节点, 2-审计, 3-证书',
  7. alert_level tinyint(4) NOT NULL COMMENT '告警规则的级别, 1-高, 2-中, 3-低',
  8. alert_interval_seconds bigint NOT NULL COMMENT '告警规则的间隔时间(s)',
  9. alert_content text NOT NULL COMMENT '告警邮件的内容',
  10. content_param_list text NOT NULL COMMENT '告警邮件内容中的可替代参数,如nodeId',
  11. description varchar(50) DEFAULT NULL COMMENT '告警规则的描述',
  12. is_all_user tinyint(4) DEFAULT 0 COMMENT '是否选中所有用户, 0:false, 1:true',
  13. user_list text DEFAULT NULL COMMENT '告警规则作用的用户列表',
  14. create_time datetime DEFAULT NULL COMMENT '告警规则的创建时间',
  15. modify_time datetime DEFAULT NULL COMMENT '告警规则的修改时间',
  16. less_than varchar(40) DEFAULT NULL COMMENT '告警规则:小于某个值',
  17. less_and_equal varchar(40) DEFAULT NULL COMMENT '告警规则:小于等于某个值',
  18. larger_than varchar(40) DEFAULT NULL COMMENT '告警规则:大于某个值',
  19. larger_and_equal varchar(40) DEFAULT NULL COMMENT '告警规则:大于等于某个值',
  20. equal varchar(40) DEFAULT NULL COMMENT '告警规则:等于某个值',
  21. last_alert_time datetime DEFAULT NULL COMMENT '上次告警的时间,与Interval间隔共同作用',
  22. PRIMARY KEY (rule_id)
  23. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='告警规则表';
  24. // tb_mail_server_config表
  25. mysql> CREATE TABLE IF NOT EXISTS tb_mail_server_config (
  26. server_id int(11) NOT NULL AUTO_INCREMENT COMMENT '邮件服务器配置的ID',
  27. server_name varchar(40) NOT NULL COMMENT '邮件服务器配置的命名',
  28. host varchar(30) NOT NULL COMMENT '邮件服务器的主机',
  29. port int(10) DEFAULT '25' NOT NULL COMMENT '邮件服务器的端口',
  30. username varchar(40) NOT NULL COMMENT '邮件服务器的邮箱地址',
  31. password varchar(40) NOT NULL COMMENT '邮件服务器的邮箱授权码',
  32. protocol varchar(10) NOT NULL COMMENT '邮件服务器的协议',
  33. default_encoding varchar(10) DEFAULT 'UTF-8' NOT NULL COMMENT '邮件服务器的默认编码(UTF-8)',
  34. create_time datetime DEFAULT NULL COMMENT '邮件服务器配置的创建时间',
  35. modify_time datetime DEFAULT NULL COMMENT '邮件服务器配置的修改时间',
  36. authentication tinyint(4) DEFAULT 1 NOT NULL COMMENT '是否开启验证, 0:false, 1:true',
  37. starttls_enable tinyint(4) DEFAULT 1 NOT NULL COMMENT '如支持,是否优先选用STARTTLS, 0:false, 1:true',
  38. starttls_required tinyint(4) DEFAULT 0 COMMENT '是否必须使用STARTTLS, 0:false, 1:true',
  39. socket_factory_port int(10) DEFAULT 465 COMMENT 'SSL的端口',
  40. socket_factory_class varchar(150) DEFAULT 'javax.net.ssl.SSLSocketFactory' COMMENT 'SSL选用的JAVA类',
  41. socket_factory_fallback tinyint(4) DEFAULT 0 COMMENT '是否启用SSL的fallback, 0:false, 1:true',
  42. enable tinyint(4) DEFAULT 0 NOT NULL COMMENT '邮件服务器是否已配置完成,0初始,1完成',
  43. connection_timeout int(10) DEFAULT 5000 NOT NULL COMMENT '邮件服务器的连接超时值',
  44. timeout int(10) DEFAULT 5000 NOT NULL COMMENT '邮件服务器的通用超时值',
  45. write_timeout int(10) DEFAULT 5000 NOT NULL COMMENT '邮件服务器的写超时值',
  46. PRIMARY KEY (server_id)
  47. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='邮件服务器配置表';
  48. // tb_alert_log表
  49. mysql> CREATE TABLE IF NOT EXISTS tb_alert_log (
  50. log_id int(11) NOT NULL AUTO_INCREMENT COMMENT '告警日志的编号',
  51. alert_type tinyint(4) NOT NULL COMMENT '告警日志的类型, 1-节点, 2-审计, 3-证书',
  52. alert_level tinyint(4) NOT NULL COMMENT '告警日志的告警等级:1-high, 2-middle, 3-low',
  53. alert_content text NOT NULL COMMENT '告警日志的内容',
  54. description text DEFAULT NULL COMMENT '告警日志的描述',
  55. status tinyint(4) NOT NULL DEFAULT '0' COMMENT '告警日志的状态:0-未处理,1-已处理',
  56. create_time datetime DEFAULT NULL COMMENT '告警日志的创建时间',
  57. modify_time datetime DEFAULT NULL COMMENT '告警日志的修改时间',
  58. PRIMARY KEY (log_id)
  59. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='告警日志表';
  • mysql下执行插入,初始化默认数据:
  1. ---- add node status alert rule template
  2. INSERT INTO `tb_alert_rule`(`rule_name`,`enable`,`alert_type`,`alert_level`,`alert_interval_seconds`,`alert_content`,`content_param_list`,`create_time`,`modify_time`) VALUES ('节点异常告警', 0, 1, 1, 3600, '{nodeId}节点异常,请到“节点管理”页面查看具体信息', '[\"{nodeId}\"]', '2019-10-29 20:02:30', '2019-10-29 20:02:30');
  3. ---- add audit alert rule template
  4. INSERT INTO `tb_alert_rule`(`rule_name`,`enable`,`alert_type`,`alert_level`,`alert_interval_seconds`,`alert_content`,`content_param_list`,`create_time`,`modify_time`) VALUES ('审计异常', 0, 2, 1, 3600, '审计异常:{auditType},请到“交易审计”页面查看具体信息', '[\"{auditType}\"]', '2019-10-29 20:02:30', '2019-10-29 20:02:30');
  5. -- add cert alert rule template
  6. INSERT INTO `tb_alert_rule`(`rule_name`,`enable`,`alert_type`,`alert_level`,`alert_interval_seconds`,`alert_content`,`content_param_list`,`create_time`,`modify_time`) VALUES ('证书有效期告警', 0, 3, 1, 3600, '证书将在{time}过期,请到“证书管理”页面查看具体信息', '[\"{time}\"]', '2019-10-29 20:02:30', '2019-10-29 20:02:30');
  7. -- add mail_server_config template
  8. INSERT INTO `tb_mail_server_config`(`server_name`,`host`,`port`,`username`,`password`,`protocol`,`default_encoding`,`create_time`,`modify_time`,`authentication`,`starttls_enable`,`starttls_required`,`socket_factory_port`,`socket_factory_class`,`socket_factory_fallback`,`enable`) VALUES ('Default config', 'smtp.qq.com', '25', 'yourmail@qq.com', 'yourpassword','smtp', 'UTF-8','2019-10-29 20:02:30', '2019-10-29 20:02:30', 1, 1, 0, 465, 'javax.net.ssl.SSLSocketFactory', 0, 0);

v1.2.0

兼容性说明:增加证书管理功能

  1. 数据表修改:增加证书管理功能:增加了tb_cert数据表,可通过项目中scripts/webase-ddl.sql进行数据表初始化;;
  2. 数据表修改:数据表tb_method增加contract_type字段,用于判断合约方法method为普通合约或系统合约(precompiled),同时添加了所有系统合约的method_id;可结合项目中scripts/webase-dml.sql第5项进行数据更新;

操作说明:

登陆mysql后,进入到相应database中,以webasenodemanager的database为例;

  1. mysql -uroot -p123456
  2. // mysql 命令行
  3. mysql> use webasenodemanager;
  • 执行tb_cert建表操作,
  1. mysql> CREATE TABLE IF NOT EXISTS tb_cert (
  2. finger_print varchar(120) NOT NULL COMMENT '证书的指纹(唯一标记)',
  3. cert_name varchar(60) NOT NULL COMMENT '证书id',
  4. content text NOT NULL COMMENT 'cert(crt证书)的内容',
  5. cert_type varchar(20) NOT NULL COMMENT '证书类型',
  6. public_key varchar(150) DEFAULT NULL COMMENT '节点证书的公钥/编号(nodeid)',
  7. address varchar(50) DEFAULT NULL COMMENT '节点证书的节点地址',
  8. father varchar(120) NOT NULL COMMENT '父证书对应地址(fingerprint)',
  9. validity_from datetime NOT NULL COMMENT '有效期开始',
  10. validity_to datetime NOT NULL COMMENT '有效期截止',
  11. modify_time datetime DEFAULT NULL COMMENT '修改时间',
  12. create_time datetime DEFAULT NULL COMMENT '创建时间',
  13. PRIMARY KEY (finger_print)
  14. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='证书信息表';
  • 在表tb_method增加contract_type
  1. mysql> alter table tb_method add column contract_type tinyint(4) DEFAULT '0' COMMENT '合约类型(0-普通合约,1-系统合约)';
  • 在表tb_method插入系统合约的默认数据

可以参考WeBASE-Node-Manager v1.2.0源码中的webase-dml.sql

  1. -- (system config info 0x1000) setValueByKey
  2. INSERT INTO `tb_method`(`method_id`, `group_id`, `abi_info`, `method_type`, `contract_type`, `create_time`, `modify_time`) VALUES ('0xbd291aef', 0, '{\"constant\":false,\"inputs\":[{\"name\":\"key\",\"type\":\"string\"},{\"name\":\"value\",\"type\":\"string\"}],\"name\":\"setValueByKey\",\"outputs\":[{\"name\":\"\",\"type\":\"int256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}', 'function', 1, '2019-09-02 16:32:30', '2019-09-02 16:32:30');
  3. -- (table factory 0x1001) createTable
  4. INSERT INTO `tb_method`(`method_id`, `group_id`, `abi_info`, `method_type`, `contract_type`, `create_time`, `modify_time`) VALUES ('0x56004b6a', 0, '{\"constant\":false,\"inputs\":[{\"name\":\"tableName\",\"type\":\"string\"},{\"name\":\"key\",\"type\":\"string\"},{\"name\":\"valueField\",\"type\":\"string\"}],\"name\":\"createTable\",\"outputs\":[{\"name\":\"\",\"type\":\"int256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}', 'function', 1, '2019-09-02 16:32:30', '2019-09-02 16:32:30');
  5. -- (crud info 0x1002) update select remove insert(same as cns's insert)
  6. INSERT INTO `tb_method`(`method_id`, `group_id`, `abi_info`, `method_type`, `contract_type`, `create_time`, `modify_time`) VALUES ('0x2dca76c1', 0, '{\"constant\":false,\"inputs\":[{\"name\":\"tableName\",\"type\":\"string\"},{\"name\":\"key\",\"type\":\"string\"},{\"name\":\"entry\",\"type\":\"string\"},{\"name\":\"condition\",\"type\":\"string\"},{\"name\":\"optional\",\"type\":\"string\"}],\"name\":\"update\",\"outputs\":[{\"name\":\"\",\"type\":\"int256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}', 'function', 1, '2019-09-02 16:32:30', '2019-09-02 16:32:30');
  7. INSERT INTO `tb_method`(`method_id`, `group_id`, `abi_info`, `method_type`, `contract_type`, `create_time`, `modify_time`) VALUES ('0x983c6c4f', 0, '{\"constant\":true,\"inputs\":[{\"name\":\"tableName\",\"type\":\"string\"},{\"name\":\"key\",\"type\":\"string\"},{\"name\":\"condition\",\"type\":\"string\"},{\"name\":\"optional\",\"type\":\"string\"}],\"name\":\"select\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}', 'function', 1, '2019-09-02 16:32:30', '2019-09-02 16:32:30');
  8. INSERT INTO `tb_method`(`method_id`, `group_id`, `abi_info`, `method_type`, `contract_type`, `create_time`, `modify_time`) VALUES ('0xa72a1e65', 0, '{\"constant\":false,\"inputs\":[{\"name\":\"tableName\",\"type\":\"string\"},{\"name\":\"key\",\"type\":\"string\"},{\"name\":\"condition\",\"type\":\"string\"},{\"name\":\"optional\",\"type\":\"string\"}],\"name\":\"remove\",\"outputs\":[{\"name\":\"\",\"type\":\"int256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}', 'function', 1, '2019-09-02 16:32:30', '2019-09-02 16:32:30');
  9. INSERT INTO `tb_method`(`method_id`, `group_id`, `abi_info`, `method_type`, `contract_type`, `create_time`, `modify_time`) VALUES ('0xa216464b', 0, '{\"constant\":false,\"inputs\":[{\"name\":\"name\",\"type\":\"string\"},{\"name\":\"version\",\"type\":\"string\"},{\"name\":\"addr\",\"type\":\"string\"},{\"name\":\"abi\",\"type\":\"string\"}],\"name\":\"insert\",\"outputs\":[{\"name\":\"\",\"type\":\"int256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}', 'function', 1, '2019-06-17 20:32:30', '2019-06-17 20:32:30');
  10. -- (consensus info node manage 0x1003) addObserver addSealer remove
  11. INSERT INTO `tb_method`(`method_id`, `group_id`, `abi_info`, `method_type`, `contract_type`, `create_time`, `modify_time`) VALUES ('0x2800efc0', 0, '{\"constant\":false,\"inputs\":[{\"name\":\"nodeID\",\"type\":\"string\"}],\"name\":\"addObserver\",\"outputs\":[{\"name\":\"\",\"type\":\"int256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}', 'function', 1, '2019-09-02 16:32:30', '2019-09-02 16:32:30');
  12. INSERT INTO `tb_method`(`method_id`, `group_id`, `abi_info`, `method_type`, `contract_type`, `create_time`, `modify_time`) VALUES ('0x89152d1f', 0, '{\"constant\":false,\"inputs\":[{\"name\":\"nodeID\",\"type\":\"string\"}],\"name\":\"addSealer\",\"outputs\":[{\"name\":\"\",\"type\":\"int256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}', 'function', 1, '2019-09-02 16:32:30', '2019-09-02 16:32:30');
  13. INSERT INTO `tb_method`(`method_id`, `group_id`, `abi_info`, `method_type`, `contract_type`, `create_time`, `modify_time`) VALUES ('0x80599e4b', 0, '{\"constant\":false,\"inputs\":[{\"name\":\"nodeID\",\"type\":\"string\"}],\"name\":\"remove\",\"outputs\":[{\"name\":\"\",\"type\":\"int256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}', 'function', 1, '2019-09-02 16:32:30', '2019-09-02 16:32:30');
  14. -- (cns info 0x1004) selectByName selectByNameAndVersion // insert(ignored, same as crud's insert method: insert(string,string,string,string)
  15. INSERT INTO `tb_method`(`method_id`, `group_id`, `abi_info`, `method_type`, `contract_type`, `create_time`, `modify_time`) VALUES ('0x819a3d62', 0, '{\"constant\":true,\"inputs\":[{\"name\":\"name\",\"type\":\"string\"}],\"name\":\"selectByName\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}', 'function', 1, '2019-06-17 20:32:30', '2019-06-17 20:32:30');
  16. INSERT INTO `tb_method`(`method_id`, `group_id`, `abi_info`, `method_type`, `contract_type`, `create_time`, `modify_time`) VALUES ('0x897f0251', 0, '{\"constant\":true,\"inputs\":[{\"name\":\"name\",\"type\":\"string\"},{\"name\":\"version\",\"type\":\"string\"}],\"name\":\"selectByNameAndVersion\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}', 'function', 1, '2019-06-17 20:32:30', '2019-06-17 20:32:30');
  17. -- INSERT INTO `tb_method`(`method_id`, `group_id`, `abi_info`, `method_type`, `contract_type`, `create_time`, `modify_time`) VALUES ('0xa216464b', 0, '{\"constant\":false,\"inputs\":[{\"name\":\"name\",\"type\":\"string\"},{\"name\":\"version\",\"type\":\"string\"},{\"name\":\"addr\",\"type\":\"string\"},{\"name\":\"abi\",\"type\":\"string\"}],\"name\":\"insert\",\"outputs\":[{\"name\":\"\",\"type\":\"int256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}', 'function', 1, '2019-06-17 20:32:30', '2019-06-17 20:32:30');
  18. -- (permission manage 0x1005) insert queryByName remove
  19. INSERT INTO `tb_method`(`method_id`, `group_id`, `abi_info`, `method_type`, `contract_type`, `create_time`, `modify_time`) VALUES ('0x06e63ff8', 0, '{\"constant\":false,\"inputs\":[{\"name\":\"table_name\",\"type\":\"string\"},{\"name\":\"addr\",\"type\":\"string\"}],\"name\":\"insert\",\"outputs\":[{\"name\":\"\",\"type\":\"int256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}', 'function', 1, '2019-09-02 16:32:30', '2019-09-02 16:32:30');
  20. INSERT INTO `tb_method`(`method_id`, `group_id`, `abi_info`, `method_type`, `contract_type`, `create_time`, `modify_time`) VALUES ('0x20586031', 0, '{\"constant\":true,\"inputs\":[{\"name\":\"table_name\",\"type\":\"string\"}],\"name\":\"queryByName\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}', 'function', 1, '2019-09-02 16:32:30', '2019-09-02 16:32:30');
  21. INSERT INTO `tb_method`(`method_id`, `group_id`, `abi_info`, `method_type`, `contract_type`, `create_time`, `modify_time`) VALUES ('0x44590a7e', 0, '{\"constant\":false,\"inputs\":[{\"name\":\"table_name\",\"type\":\"string\"},{\"name\":\"addr\",\"type\":\"string\"}],\"name\":\"remove\",\"outputs\":[{\"name\":\"\",\"type\":\"int256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}', 'function', 1, '2019-09-02 16:32:30', '2019-09-02 16:32:30');

如果结果为以下则代表插入成功:

  1. // 插入成功
  2. Query OK, 1 row affected (0.01 sec)
  3. // 数据已存在
  4. ERROR 1062 (23000): Duplicate entry '0x20586031-0' for key 'PRIMARY'