 Go在工程实践的错误处理能够确定对端的唯一来源,例如对端的应用名称、对端的 配置、对端的IP。 对端请求的方法。 请求的参数信息,包括 header 里的 metadata 响应的数据,包括 header 里的 metadata 错误码和错误信息 请求到响应的耗时时间 调用处执行的行号 总结起来,调试阶段需要对接的信息 为什么调试慢?-- 错误信息 高亮信息 封装组件 充足信息 • 在调试阶段,日志用红色高亮错误 为什么调试慢?-- 错误信息 高亮信息 封装组件 充足信息 • 没有调试信息和错误信息 • 对接起来会非常麻烦 优雅处理错误信息 第三部分 为什么定位慢?-- 错误处理 不要透传错误 错误码唯一性 记录一次错误 假设用户反馈了无法打开一个文件 我们的程序员非常认真 记录了文件不存在的错误日志 • 同样的错误信息,非常多的杂音 • 每个Error,都去查看一次对应代码,排查效率低 不要透传错误 错误码唯一性 记录一次错误 日志分析不出是哪个service 调用了MySQL 为什么定位慢?-- 错误处理 带来新的问题,无法定位整个代码执行链路 不要透传错误 错误码唯一性 记录一次错误 • 不能透传错误,fmt.Errorf • 如果不考虑性能 • 日志开启Stack • 错误追加Stack 为什么定位慢?-- 错误处理 不要透传错误 错误码唯一性 记录一次错误0 码力 | 30 页 | 3.11 MB | 1 年前3 Go在工程实践的错误处理能够确定对端的唯一来源,例如对端的应用名称、对端的 配置、对端的IP。 对端请求的方法。 请求的参数信息,包括 header 里的 metadata 响应的数据,包括 header 里的 metadata 错误码和错误信息 请求到响应的耗时时间 调用处执行的行号 总结起来,调试阶段需要对接的信息 为什么调试慢?-- 错误信息 高亮信息 封装组件 充足信息 • 在调试阶段,日志用红色高亮错误 为什么调试慢?-- 错误信息 高亮信息 封装组件 充足信息 • 没有调试信息和错误信息 • 对接起来会非常麻烦 优雅处理错误信息 第三部分 为什么定位慢?-- 错误处理 不要透传错误 错误码唯一性 记录一次错误 假设用户反馈了无法打开一个文件 我们的程序员非常认真 记录了文件不存在的错误日志 • 同样的错误信息,非常多的杂音 • 每个Error,都去查看一次对应代码,排查效率低 不要透传错误 错误码唯一性 记录一次错误 日志分析不出是哪个service 调用了MySQL 为什么定位慢?-- 错误处理 带来新的问题,无法定位整个代码执行链路 不要透传错误 错误码唯一性 记录一次错误 • 不能透传错误,fmt.Errorf • 如果不考虑性能 • 日志开启Stack • 错误追加Stack 为什么定位慢?-- 错误处理 不要透传错误 错误码唯一性 记录一次错误0 码力 | 30 页 | 3.11 MB | 1 年前3
 TarsGo微服务开发实践-利开园2021-08-21 关于我 Docker TarsGo Tars+K8S DevOps 2015至今 腾讯 目录 1. RPC 2. 日志 3. 监控 4. 调用链 5. 网关 6. 错误码 7. 配置 8. 云原生 9. 标准化 背景 • Tars是腾讯开源的微服务解决方案 • 高性能的RPC框架 • 丰富的服务治理能力 • 支持Golang/Cpp/Java/PHP/Nodejs com/tarscloud/gopractice RPC:不应该只是RPC • 基本功能:远程函数调用 • 可观测 • 名字服务+SET流量管理 • 熔断与恢复 • 轮询/一致性Hash • 错误码管理 日志:排查问题的利器 • 格式化 =〉 JSON • 单机withFields • 基于context • 跨服务withFields • 基于透传元数据 • 按大小/时间滚动 • Tracing:在复杂系统中定位问题 • 依赖框架Context透传 • 基于OpenTracing+Jaeger • 第三库不支持如何解决? 错误码:给主调方更好的提示 • 错误码区分内部错误与请求 • 接口返回error实例 网关: 将问题在团队内部闭环 • 无业务逻辑 • 可观测 • 错误码 • 超时控制 • 增加RPC接口不用发布的解决方案 # curl -d '{"msg":"abc"}' 172.250 码力 | 15 页 | 4.23 MB | 1 年前3 TarsGo微服务开发实践-利开园2021-08-21 关于我 Docker TarsGo Tars+K8S DevOps 2015至今 腾讯 目录 1. RPC 2. 日志 3. 监控 4. 调用链 5. 网关 6. 错误码 7. 配置 8. 云原生 9. 标准化 背景 • Tars是腾讯开源的微服务解决方案 • 高性能的RPC框架 • 丰富的服务治理能力 • 支持Golang/Cpp/Java/PHP/Nodejs com/tarscloud/gopractice RPC:不应该只是RPC • 基本功能:远程函数调用 • 可观测 • 名字服务+SET流量管理 • 熔断与恢复 • 轮询/一致性Hash • 错误码管理 日志:排查问题的利器 • 格式化 =〉 JSON • 单机withFields • 基于context • 跨服务withFields • 基于透传元数据 • 按大小/时间滚动 • Tracing:在复杂系统中定位问题 • 依赖框架Context透传 • 基于OpenTracing+Jaeger • 第三库不支持如何解决? 错误码:给主调方更好的提示 • 错误码区分内部错误与请求 • 接口返回error实例 网关: 将问题在团队内部闭环 • 无业务逻辑 • 可观测 • 错误码 • 超时控制 • 增加RPC接口不用发布的解决方案 # curl -d '{"msg":"abc"}' 172.250 码力 | 15 页 | 4.23 MB | 1 年前3
 FISCO BCOS 2.1.0 中文文档分布式存储:新增支持RocksDB引擎,搭建新链时存储默认采用 RocksDB 分布式存储:新增CRUD接口支持,控制台1.0.3以上版本提供类SQL语 句读写区块链数据 更新 完善ABI解码模块 修改预编译合约和RPC接口错误码,统一为负数 优化存储模块,增加缓存层,支持配置缓存大小 优化存储模块,允许流水线提交区块。可配置[storage].max_capacity 控制允许使用的内存空间大小 移动分布式存储配置项[st 命令返回正确的执行结果,以字符串或是json的形式返回。 错误结果: 命令返回错误的执行结果,以字符串或是json的形式返回。 控制台的命令调用JSON-RPC接口时,错误码参考这里。 控制台的命令调用Precompiled Service接口时,错误码参考这里。 控制台配置与运行 重要 前置条件:搭建FISCO BCOS区块链请参考 建链脚本 或 企业工具。 获取控制台 目录结构如下: $ cd Channel2ClientMultiBin [topic] [filename] 启动AMOP客户端: 错误码 99:发送消息失败,AMOP经由所有链路的尝试后,消息未能发到服务 端,建议使用发送时生成的seq,检查链路上各个节点的处理情况。 100:区块链节点之间经由所有链路的尝试后,消息未能发送到可以接收 该消息的节点,和错误码‘99’一样,建议使用发送时生成的‘seq’,检查 链路上各个节点的处理情况。 100 码力 | 1058 页 | 740.85 KB | 1 年前3 FISCO BCOS 2.1.0 中文文档分布式存储:新增支持RocksDB引擎,搭建新链时存储默认采用 RocksDB 分布式存储:新增CRUD接口支持,控制台1.0.3以上版本提供类SQL语 句读写区块链数据 更新 完善ABI解码模块 修改预编译合约和RPC接口错误码,统一为负数 优化存储模块,增加缓存层,支持配置缓存大小 优化存储模块,允许流水线提交区块。可配置[storage].max_capacity 控制允许使用的内存空间大小 移动分布式存储配置项[st 命令返回正确的执行结果,以字符串或是json的形式返回。 错误结果: 命令返回错误的执行结果,以字符串或是json的形式返回。 控制台的命令调用JSON-RPC接口时,错误码参考这里。 控制台的命令调用Precompiled Service接口时,错误码参考这里。 控制台配置与运行 重要 前置条件:搭建FISCO BCOS区块链请参考 建链脚本 或 企业工具。 获取控制台 目录结构如下: $ cd Channel2ClientMultiBin [topic] [filename] 启动AMOP客户端: 错误码 99:发送消息失败,AMOP经由所有链路的尝试后,消息未能发到服务 端,建议使用发送时生成的seq,检查链路上各个节点的处理情况。 100:区块链节点之间经由所有链路的尝试后,消息未能发送到可以接收 该消息的节点,和错误码‘99’一样,建议使用发送时生成的‘seq’,检查 链路上各个节点的处理情况。 100 码力 | 1058 页 | 740.85 KB | 1 年前3
 FISCO BCOS 2.3.0 中文文档分布式存储:新增支持RocksDB引擎,搭建新链时存储默认采用 RocksDB 分布式存储:新增CRUD接口支持,控制台1.0.3以上版本提供类SQL语 句读写区块链数据 更新 完善ABI解码模块 修改预编译合约和RPC接口错误码,统一为负数 优化存储模块,增加缓存层,支持配置缓存大小 优化存储模块,允许流水线提交区块。可配置[storage].max_capacity 控制允许使用的内存空间大小 移动分布式存储配置项[st 命令返回正确的执行结果,以字符串或是json的形式返回。 错误结果: 命令返回错误的执行结果,以字符串或是json的形式返回。 控制台的命令调用JSON-RPC接口时,错误码参考这里。 控制台的命令调用Precompiled Service接口时,错误码参考这里。 控制台配置与运行 重要 前置条件:搭建FISCO BCOS区块链请参考 开发部署工具 或 企业工具。 获取控制台 注解 cd ~ && Channel2ServerNeedVerify [topic] 启动AMOP客户端: 错误码 99:发送消息失败,AMOP经由所有链路的尝试后,消息未能发到服务 端,建议使用发送时生成的seq,检查链路上各个节点的处理情况。 100:区块链节点之间经由所有链路的尝试后,消息未能发送到可以接收 该消息的节点,和错误码‘99’一样,建议使用发送时生成的‘seq’,检查 链路上各个节点的处理情况。 100 码力 | 1227 页 | 10.79 MB | 1 年前3 FISCO BCOS 2.3.0 中文文档分布式存储:新增支持RocksDB引擎,搭建新链时存储默认采用 RocksDB 分布式存储:新增CRUD接口支持,控制台1.0.3以上版本提供类SQL语 句读写区块链数据 更新 完善ABI解码模块 修改预编译合约和RPC接口错误码,统一为负数 优化存储模块,增加缓存层,支持配置缓存大小 优化存储模块,允许流水线提交区块。可配置[storage].max_capacity 控制允许使用的内存空间大小 移动分布式存储配置项[st 命令返回正确的执行结果,以字符串或是json的形式返回。 错误结果: 命令返回错误的执行结果,以字符串或是json的形式返回。 控制台的命令调用JSON-RPC接口时,错误码参考这里。 控制台的命令调用Precompiled Service接口时,错误码参考这里。 控制台配置与运行 重要 前置条件:搭建FISCO BCOS区块链请参考 开发部署工具 或 企业工具。 获取控制台 注解 cd ~ && Channel2ServerNeedVerify [topic] 启动AMOP客户端: 错误码 99:发送消息失败,AMOP经由所有链路的尝试后,消息未能发到服务 端,建议使用发送时生成的seq,检查链路上各个节点的处理情况。 100:区块链节点之间经由所有链路的尝试后,消息未能发送到可以接收 该消息的节点,和错误码‘99’一样,建议使用发送时生成的‘seq’,检查 链路上各个节点的处理情况。 100 码力 | 1227 页 | 10.79 MB | 1 年前3
 FISCO BCOS 2.2.0 中文文档分布式存储:新增支持RocksDB引擎,搭建新链时存储默认采用 RocksDB 分布式存储:新增CRUD接口支持,控制台1.0.3以上版本提供类SQL语 句读写区块链数据 更新 完善ABI解码模块 修改预编译合约和RPC接口错误码,统一为负数 优化存储模块,增加缓存层,支持配置缓存大小 优化存储模块,允许流水线提交区块。可配置[storage].max_capacity 控制允许使用的内存空间大小 移动分布式存储配置项[st 命令返回正确的执行结果,以字符串或是json的形式返回。 错误结果: 命令返回错误的执行结果,以字符串或是json的形式返回。 控制台的命令调用JSON-RPC接口时,错误码参考这里。 控制台的命令调用Precompiled Service接口时,错误码参考这里。 控制台配置与运行 重要 前置条件:搭建FISCO BCOS区块链请参考 建链脚本 或 企业工具。 获取控制台 目录结构如下: cd ~ Channel2ServerNeedVerify [topic] 启动AMOP客户端: 错误码 99:发送消息失败,AMOP经由所有链路的尝试后,消息未能发到服务 端,建议使用发送时生成的seq,检查链路上各个节点的处理情况。 100:区块链节点之间经由所有链路的尝试后,消息未能发送到可以接收 该消息的节点,和错误码‘99’一样,建议使用发送时生成的‘seq’,检查 链路上各个节点的处理情况。 100 码力 | 1156 页 | 10.03 MB | 1 年前3 FISCO BCOS 2.2.0 中文文档分布式存储:新增支持RocksDB引擎,搭建新链时存储默认采用 RocksDB 分布式存储:新增CRUD接口支持,控制台1.0.3以上版本提供类SQL语 句读写区块链数据 更新 完善ABI解码模块 修改预编译合约和RPC接口错误码,统一为负数 优化存储模块,增加缓存层,支持配置缓存大小 优化存储模块,允许流水线提交区块。可配置[storage].max_capacity 控制允许使用的内存空间大小 移动分布式存储配置项[st 命令返回正确的执行结果,以字符串或是json的形式返回。 错误结果: 命令返回错误的执行结果,以字符串或是json的形式返回。 控制台的命令调用JSON-RPC接口时,错误码参考这里。 控制台的命令调用Precompiled Service接口时,错误码参考这里。 控制台配置与运行 重要 前置条件:搭建FISCO BCOS区块链请参考 建链脚本 或 企业工具。 获取控制台 目录结构如下: cd ~ Channel2ServerNeedVerify [topic] 启动AMOP客户端: 错误码 99:发送消息失败,AMOP经由所有链路的尝试后,消息未能发到服务 端,建议使用发送时生成的seq,检查链路上各个节点的处理情况。 100:区块链节点之间经由所有链路的尝试后,消息未能发送到可以接收 该消息的节点,和错误码‘99’一样,建议使用发送时生成的‘seq’,检查 链路上各个节点的处理情况。 100 码力 | 1156 页 | 10.03 MB | 1 年前3
 FISCO BCOS 2.9.0 中文文档分布式存储:新增支持RocksDB引擎,搭建新链时存储默认采用 RocksDB 分布式存储:新增CRUD接口支持,控制台1.0.3以上版本提供类SQL语 句读写区块链数据 更新 完善ABI解码模块 修改预编译合约和RPC接口错误码,统一为负数 优化存储模块,增加缓存层,支持配置缓存大小 优化存储模块,允许流水线提交区块。可配置[storage].max_capacity 控制允许使用的内存空间大小 移动分布式存储配置项[st tableName 表的名称 * @param key 表的主键名 * @param valueFields 表的字段名,多个字段名以英文逗号分隔 * @return 返回错误码,成功为0,错误则为负数 */ function createTable(string tableName,string key,string valueFields) public tableName 表的名称 * @param key 表的主键名 * @param valueFields 表的字段名,多个字段名以英文逗号分隔 * @return 返回错误码,成功为0,错误则为负数 */ function createTable(string tableName,string key,string valueFields) public0 码力 | 2649 页 | 201.08 MB | 1 年前3 FISCO BCOS 2.9.0 中文文档分布式存储:新增支持RocksDB引擎,搭建新链时存储默认采用 RocksDB 分布式存储:新增CRUD接口支持,控制台1.0.3以上版本提供类SQL语 句读写区块链数据 更新 完善ABI解码模块 修改预编译合约和RPC接口错误码,统一为负数 优化存储模块,增加缓存层,支持配置缓存大小 优化存储模块,允许流水线提交区块。可配置[storage].max_capacity 控制允许使用的内存空间大小 移动分布式存储配置项[st tableName 表的名称 * @param key 表的主键名 * @param valueFields 表的字段名,多个字段名以英文逗号分隔 * @return 返回错误码,成功为0,错误则为负数 */ function createTable(string tableName,string key,string valueFields) public tableName 表的名称 * @param key 表的主键名 * @param valueFields 表的字段名,多个字段名以英文逗号分隔 * @return 返回错误码,成功为0,错误则为负数 */ function createTable(string tableName,string key,string valueFields) public0 码力 | 2649 页 | 201.08 MB | 1 年前3
 FISCO BCOS 2.9.0 中文文档分布式存储:新增支持RocksDB引擎,搭建新链时存储默认采用 RocksDB 分布式存储:新增CRUD接口支持,控制台1.0.3以上版本提供类SQL语 句读写区块链数据 更新 完善ABI解码模块 修改预编译合约和RPC接口错误码,统一为负数 优化存储模块,增加缓存层,支持配置缓存大小 优化存储模块,允许流水线提交区块。可配置[storage].max_capacity 控制允许使用的内存空间大小 移动分布式存储配置项[st tableName 表的名称 * @param key 表的主键名 * @param valueFields 表的字段名,多个字段名以英文逗号分隔 * @return 返回错误码,成功为0,错误则为负数 */ function createTable(string tableName,string key,string valueFields) public tableName 表的名称 * @param key 表的主键名 * @param valueFields 表的字段名,多个字段名以英文逗号分隔 * @return 返回错误码,成功为0,错误则为负数 */ function createTable(string tableName,string key,string valueFields) public0 码力 | 2649 页 | 201.08 MB | 1 年前3 FISCO BCOS 2.9.0 中文文档分布式存储:新增支持RocksDB引擎,搭建新链时存储默认采用 RocksDB 分布式存储:新增CRUD接口支持,控制台1.0.3以上版本提供类SQL语 句读写区块链数据 更新 完善ABI解码模块 修改预编译合约和RPC接口错误码,统一为负数 优化存储模块,增加缓存层,支持配置缓存大小 优化存储模块,允许流水线提交区块。可配置[storage].max_capacity 控制允许使用的内存空间大小 移动分布式存储配置项[st tableName 表的名称 * @param key 表的主键名 * @param valueFields 表的字段名,多个字段名以英文逗号分隔 * @return 返回错误码,成功为0,错误则为负数 */ function createTable(string tableName,string key,string valueFields) public tableName 表的名称 * @param key 表的主键名 * @param valueFields 表的字段名,多个字段名以英文逗号分隔 * @return 返回错误码,成功为0,错误则为负数 */ function createTable(string tableName,string key,string valueFields) public0 码力 | 2649 页 | 201.08 MB | 1 年前3
 FISCO BCOS 2.7.0 中文文档分布式存储:新增支持RocksDB引擎,搭建新链时存储默认采用 RocksDB 分布式存储:新增CRUD接口支持,控制台1.0.3以上版本提供类SQL语 句读写区块链数据 更新 完善ABI解码模块 修改预编译合约和RPC接口错误码,统一为负数 优化存储模块,增加缓存层,支持配置缓存大小 优化存储模块,允许流水线提交区块。可配置[storage].max_capacity 控制允许使用的内存空间大小 移动分布式存储配置项[st tableName 表的名称 * @param key 表的主键名 * @param valueFields 表的字段名,多个字段名以英文逗号分隔 * @return 返回错误码,成功为0,错误则为负数 */ function createTable(string tableName,string key,string valueFields) public tableName 表的名称 * @param key 表的主键名 * @param valueFields 表的字段名,多个字段名以英文逗号分隔 * @return 返回错误码,成功为0,错误则为负数 */ function createTable(string tableName,string key,string valueFields) public0 码力 | 2538 页 | 212.43 MB | 1 年前3 FISCO BCOS 2.7.0 中文文档分布式存储:新增支持RocksDB引擎,搭建新链时存储默认采用 RocksDB 分布式存储:新增CRUD接口支持,控制台1.0.3以上版本提供类SQL语 句读写区块链数据 更新 完善ABI解码模块 修改预编译合约和RPC接口错误码,统一为负数 优化存储模块,增加缓存层,支持配置缓存大小 优化存储模块,允许流水线提交区块。可配置[storage].max_capacity 控制允许使用的内存空间大小 移动分布式存储配置项[st tableName 表的名称 * @param key 表的主键名 * @param valueFields 表的字段名,多个字段名以英文逗号分隔 * @return 返回错误码,成功为0,错误则为负数 */ function createTable(string tableName,string key,string valueFields) public tableName 表的名称 * @param key 表的主键名 * @param valueFields 表的字段名,多个字段名以英文逗号分隔 * @return 返回错误码,成功为0,错误则为负数 */ function createTable(string tableName,string key,string valueFields) public0 码力 | 2538 页 | 212.43 MB | 1 年前3
 FISCO BCOS 3.0.0-rc2 中文文档分布式存储:新增支持RocksDB引擎,搭建新链时存储默认采用 RocksDB 分布式存储:新增CRUD接口支持,控制台1.0.3以上版本提供类SQL语 句读写区块链数据 更新 完善ABI解码模块 修改预编译合约和RPC接口错误码,统一为负数 优化存储模块,增加缓存层,支持配置缓存大小 优化存储模块,允许流水线提交区块。可配置[storage].max_capacity 控制允许使用的内存空间大小 移动分布式存储配置项[st tableName 表的名称 * @param key 表的主键名 * @param valueFields 表的字段名,多个字段名以英文逗号分隔 * @return 返回错误码,成功为0,错误则为负数 */ function createTable(string tableName,string key,string valueFields) public tableName 表的名称 * @param key 表的主键名 * @param valueFields 表的字段名,多个字段名以英文逗号分隔 * @return 返回错误码,成功为0,错误则为负数 */ function createTable(string tableName,string key,string valueFields) public0 码力 | 2569 页 | 166.06 MB | 1 年前3 FISCO BCOS 3.0.0-rc2 中文文档分布式存储:新增支持RocksDB引擎,搭建新链时存储默认采用 RocksDB 分布式存储:新增CRUD接口支持,控制台1.0.3以上版本提供类SQL语 句读写区块链数据 更新 完善ABI解码模块 修改预编译合约和RPC接口错误码,统一为负数 优化存储模块,增加缓存层,支持配置缓存大小 优化存储模块,允许流水线提交区块。可配置[storage].max_capacity 控制允许使用的内存空间大小 移动分布式存储配置项[st tableName 表的名称 * @param key 表的主键名 * @param valueFields 表的字段名,多个字段名以英文逗号分隔 * @return 返回错误码,成功为0,错误则为负数 */ function createTable(string tableName,string key,string valueFields) public tableName 表的名称 * @param key 表的主键名 * @param valueFields 表的字段名,多个字段名以英文逗号分隔 * @return 返回错误码,成功为0,错误则为负数 */ function createTable(string tableName,string key,string valueFields) public0 码力 | 2569 页 | 166.06 MB | 1 年前3
 FISCO BCOS 2.0 中文文档分布式存储:新增支持RocksDB引擎,搭建新链时存储默认采用 RocksDB 分布式存储:新增CRUD接口支持,控制台1.0.3以上版本提供类SQL语 句读写区块链数据 更新 完善ABI解码模块 修改预编译合约和RPC接口错误码,统一为负数 优化存储模块,增加缓存层,支持配置缓存大小 优化存储模块,允许流水线提交区块。可配置[storage].max_capacity 控制允许使用的内存空间大小 移动分布式存储配置项[st tableName 表的名称 * @param key 表的主键名 * @param valueFields 表的字段名,多个字段名以英文逗号分隔 * @return 返回错误码,成功为0,错误则为负数 */ function createTable(string tableName,string key,string valueFields) public tableName 表的名称 * @param key 表的主键名 * @param valueFields 表的字段名,多个字段名以英文逗号分隔 * @return 返回错误码,成功为0,错误则为负数 */ function createTable(string tableName,string key,string valueFields) public0 码力 | 2649 页 | 201.08 MB | 1 年前3 FISCO BCOS 2.0 中文文档分布式存储:新增支持RocksDB引擎,搭建新链时存储默认采用 RocksDB 分布式存储:新增CRUD接口支持,控制台1.0.3以上版本提供类SQL语 句读写区块链数据 更新 完善ABI解码模块 修改预编译合约和RPC接口错误码,统一为负数 优化存储模块,增加缓存层,支持配置缓存大小 优化存储模块,允许流水线提交区块。可配置[storage].max_capacity 控制允许使用的内存空间大小 移动分布式存储配置项[st tableName 表的名称 * @param key 表的主键名 * @param valueFields 表的字段名,多个字段名以英文逗号分隔 * @return 返回错误码,成功为0,错误则为负数 */ function createTable(string tableName,string key,string valueFields) public tableName 表的名称 * @param key 表的主键名 * @param valueFields 表的字段名,多个字段名以英文逗号分隔 * @return 返回错误码,成功为0,错误则为负数 */ function createTable(string tableName,string key,string valueFields) public0 码力 | 2649 页 | 201.08 MB | 1 年前3
共 78 条
- 1
- 2
- 3
- 4
- 5
- 6
- 8














