华为云用户手册

  • GAUSS-03091 -- GAUSS-03100 GAUSS-03091: "malformed array literal: '%s'" SQLSTATE: 22P02 错误原因:数组输入数据格式错误。 解决办法:请确认输入字符串,是否可以转换成数组常量。 GAUSS-03092: "multidimensional arrays must have array expressions with matching dimensions" SQLSTATE: 22P02 错误原因:多维的数组必须具有与维度相匹配的数组表达式。 解决办法:检查输入字符串。 GAUSS-03093: "array size exceeds the maximum allowed (%d)" SQLSTATE: 54000 错误原因:数组长度超出了最大值。 解决办法:请检查输入字符串中包含的数组元素是否超过了错误信息中指定的数值。 GAUSS-03094: "null array element where not supported" SQLSTATE: XX000 错误原因:系统内部错误。 解决办法:请联系技术支持工程师提供技术支持。 GAUSS-03095: "invalid number of dimensions: %d" SQLSTATE: 22P03 错误原因:数组的维度小于0。 解决办法:检查输入参数。 GAUSS-03096: "invalid array flags" SQLSTATE: 22P03 错误原因:数组标志非法,只能为0或1。 解决办法:检查输入参数。 GAUSS-03097: "wrong element type" SQLSTATE: 42804 错误原因:数组元素的类型不一致。 解决办法:检查输入参数。 GAUSS-03098: "insufficient data left in message" SQLSTATE: 22P03 错误原因:message中剩余的长度小于message首获取的长度值。 解决办法:检查当前字符串。 GAUSS-03099: "improper binary format in array element %d" SQLSTATE: 22P03 错误原因:读完数组时,缓冲区还有数据。 解决办法:输入数据有误,检查之。 GAUSS-03100: "slices of fixed-length arrays not implemented" SQLSTATE: 0A000 错误原因:定长数组不支持分片。 解决办法:去掉查询中对定长数组分片的操作。 父主题: GAUSS-03001 -- GAUSS-03100
  • 响应消息 正常响应参数说明 表4 响应Body参数 参数 参数类型 描述 flavor_groups Array of FlavorGroupInfo objects 引擎信息列表。 表5 FlavorGroupInfo 参数 参数类型 描述 flavors Array of Flavor objects 引擎ID。 offset Integer 分页参数: 起始值。 limit Integer 分页参数:每页多少条。 total Integer 引擎信息总数。 表6 Flavor 参数 参数类型 描述 az_infos Array of AvailableZone objects 可用区信息。 normal:在售。 unsupported:暂不支持该规格。 sellout:售罄。 id String 规格ID。 spec_code String 资源规格编码。 vcpus String CPU大小。例如:1表示1U。 ram String 内存大小,单位:GB。 表7 AvailableZone 参数 参数类型 描述 code String 可用区CODE。 description String 可用区描述。 status String 可用区状态。 support_ipv6 Boolean 是否支持IPV6。
  • URI URL格式 GET /v3/{project_id}/flavors?engine_id={engine_id}&offset={offset}&limit={limit}&engine_version={engine_version}&available_zones={available_zones} 参数说明 表1 路径参数 参数 是否必选 参数类型 描述 project_id 是 String 租户在某一region下的project ID。 获取方法请参见获取项目ID。 表2 Query参数 参数 是否必选 参数类型 描述 engine_id 否 String 引擎ID,通过查询DDM引擎信息接口获取,引擎ID与引擎版本至少指定一个。 engine_version 否 String 引擎版本,通过查询DDM引擎信息接口获取,引擎ID与引擎版本至少指定一个。 available_zones 否 String 可用区,多个用","分割,如cn-southwest-244a,cn-southwest-244b。取值非空,请参见地区和终端节点。 offset 否 Integer 索引位置,偏移量。 从第一条数据偏移offset条数据后开始查询,默认为0。 取值必须为数字,且不能为负数。 limit 否 Integer 查询个数上限值。 取值范围:1~128。 不传该参数时,默认值为10。
  • URI URL格式 GET /v3/{project_id}/instances/{instance_id}/processes-audit-log?offset={offset}&limit={limit}&start_time={start_time}&end_time={end_time} 参数说明 表1 路径参数 参数 是否必选 参数类型 描述 project_id 是 String 租户在某一region下的project ID。 获取方法请参见获取项目ID。 instance_id 是 String DDM实例ID或关联RDS实例ID。 表2 Query参数 参数 是否必选 参数类型 描述 offset 否 Integer 索引位置,偏移量。 从第一条数据偏移offset条数据后开始查询,默认为0。 取值必须为数字,且不能为负数。 limit 否 Integer 查询个数上限值。 取值范围:1~128。 不传该参数时,默认值为10。 start_time 是 String 开始时间,UTC time,精确到毫秒。格式为“yyyy-mm-ddThh:mm:ssZ”。其中,T指某个时间的开始;Z指时区偏移量,例如北京时间偏移显示为+0800。 end_time 是 String 结束时间,UTC time,精确到毫秒。格式为“yyyy-mm-ddThh:mm:ssZ”。其中,T指某个时间的开始;Z指时区偏移量,例如北京时间偏移显示为+0800。结束时间与开始时间,间隔不能超过7天。
  • 响应消息 正常响应参数说明 表4 响应Body参数 参数 参数类型 描述 total_count Integer 总条数。 process_audit_logs Array of 表4 UserProcessAuditLog objects 实例的kill会话审计日志列表。 表5 UserProcessAuditLog 参数 参数类型 描述 instance_id String 实例ID。 instance_name String 实例名称。 process_id String 会话ID。 execute_user_name String 执行操作的用户名。 execute_time String 操作时间,UTC time。 正常响应示例 { "total_count": 1, "process_audit_logs": [ { "instance_id": "5af0884170a84164980f79f9f5bf230c****", "instance_name": "UTS-ddm-name", "process_id": 6708736, "execute_user_name": "user_name", "execute_time": "2024-06-18T03:08:15+0800VGltZQ==" } ] } 异常响应 请参见异常请求结果。
  • URI URL格式 GET /v3/{project_id}/instances/{instance_id}/groups?offset={offset}&limit={limit} 参数说明 表1 路径参数 参数 是否必选 参数类型 描述 project_id 是 String 租户在某一region下的project ID。 获取方法请参见获取项目ID。 instance_id 是 String DDM实例ID。 表2 Query参数 参数 是否必选 参数类型 描述 offset 否 Integer 索引位置,偏移量。 从第一条数据偏移offset条数据后开始查询,默认为0。 取值必须为数字,且不能为负数。 limit 否 Integer 查询个数上限值。 取值范围:1~128。 不传该参数时,默认值为10。
  • 响应消息 正常响应参数说明 表4 响应Body参数 参数 参数类型 描述 total_count Integer 总条数。 group_list Array of 表5 objects 实例的组信息列表。 表5 GroupInfo 参数 参数类型 描述 id String 组ID。 name String 组名称。 role String 组角色类型,分为读写组和只读组。 返回值: rw:读写组 r:只读组 endpoint String 组的连接地址。如果没有开启负载均衡,则返回的是组内节点的连接地址串。 ipv6_endpoint String 组IPv6的连接地址。 is_load_balance Boolean 是否开启负载均衡。 is_default_group Boolean 是否为默认组。 cpu_num_per_node Integer 单节点CPU的核数。 mem_num_per_node Integer 单节点的内存大小,单位为GB。 architecture String CPU架构。 返回值: X86 ARM node_list Array of 表6 objects 节点信息列表。 表6 GroupNodeInfo 参数 参数类型 描述 id String 节点ID。 name String 节点名称。 az String 节点所在的可用区。 正常响应示例 { "group_list":[ { "id":"****gr09", "name":"group-default", "role":"rw", "endpoint":"**.**.**.**:5066", "is_load_balance":true, "is_default_group":false, "architecture":"X86", "cpu_num_per_node":4, "mem_num_per_node":8, "node_list":[ { "id":"****no09", "name":"node_01", "az":"some_az" } ] } ], "total_count":1 } 异常响应 请参见异常请求结果。
  • URI URL格式 GET /v3/{project_id}/instances/{instance_id}/physical-processes?offset={offset}&limit={limit} 参数说明 表1 路径参数 参数 是否必选 参数类型 描述 project_id 是 String 租户在某一region下的project ID。 获取方法请参见获取项目ID。 instance_id 是 String 关联RDS实例ID。 表2 Query参数 参数 是否必选 参数类型 描述 offset 否 Integer 索引位置,偏移量。 从第一条数据偏移offset条数据后开始查询,默认为0。 取值必须为数字,且不能为负数。 limit 否 Integer 查询个数上限值。 取值范围:1~128。 不传该参数时,默认值为10。 keyword 否 String 会话结果筛选关键字,支持返回结果全字段模糊匹配,长度最大255。
  • 响应消息 正常响应参数说明 表4 响应Body参数 参数 参数类型 描述 total_count Integer 总条数。 physical_processes Array of 表5 objects 实例的物理会话列表。 表5 PhysicalProcessInfo 参数 参数类型 描述 id Long 物理会话ID。 user String 当前连接的用户。 host String 所属的IP和端口。 db String 数据库名。 command String 连接状态,一般是休眠或空闲(sleep),查询(query),连接(connect)。 time Long 连接状态持续的时间,单位是秒(s)。 state String 当前SQL语句的状态。 info String 当前所执行的SQL语句。 trx_executed_time Long 事务持续时间,单位是秒(s)。 正常响应示例 { "physical_processes": [ { "id": 1973, "user": "DDMRW1613058863", "host": "172.16.241.84:58908", "db": "ddm_db_test_0001", "state": "", "command": "Sleep", "info": null, "time": 13977, "trx_executed_time": 0 } ], "total_count": 1 } 异常响应 请参见异常请求结果。
  • 响应示例 状态码: 200 OK { "databases" : [ { "status" : "RUNNING", "created" : "1642063713625", "name" : "mytestdb170", "shard_mode" : "cluster", "shard_number" : 8, "shard_unit" : 8, "used_rds" : [ { "id" : "c6f68fed9e74478c8679479a07d7d568in01", "status" : "normal", "name" : "rds-test" } ] } ], "total" : 172 } 状态码: 400 bad request { "externalMessage" : "Parameter error.", "errCode" : "DBS.280001" } 状态码: 500 server error { "externalMessage" : "Server failure.", "errCode" : "DBS.200412" }
  • 响应参数 状态码: 200 表4 响应Body参数 参数 参数类型 描述 databases Array of GetDatabaseInfo objects 逻辑库相关信息的集合。 total Integer 总条数。 表5 GetDatabaseInfo 参数 参数类型 描述 name String 逻辑库名称。 shard_mode String 逻辑库的工作模式。 cluster表示逻辑库是拆分模式。 single表示逻辑库是非拆分模式。 shard_number Integer 同一种工作模式下逻辑库分片的数量。 status String 逻辑库状态。 created String 逻辑库的创建时间。 used_rds Array of GetDatabaseUsedRds objects 逻辑库关联的RDS实例信息。 shard_unit Integer 单个RDS上的逻辑库分片数。 表6 GetDatabaseUsedRds 参数 参数类型 描述 id String 关联RDS节点ID。 name String 关联RDS名称。 status String 关联RDS状态。 error_msg String 响应信息,若无异常信息则不返回该参数。 状态码: 400 表7 响应Body参数 参数 参数类型 描述 errCode String 业务错误码。 externalMessage String 错误信息。 状态码: 500 表8 响应Body参数 参数 参数类型 描述 errCode String 业务错误码。 externalMessage String 错误信息。
  • URI GET /v1/{project_id}/instances/{instance_id}/databases?offset={offset}&limit={limit} 表1 路径参数 参数 是否必选 参数类型 描述 project_id 是 String 项目ID。 获取方法请参见获取项目ID。 instance_id 是 String DDM实例ID。 表2 Query参数 参数 是否必选 参数类型 描述 offset 否 Integer 索引位置,偏移量。 从第一条数据偏移offset条数据后开始查询,默认为0。 取值必须为数字,且不能为负数。 limit 否 Integer 查询个数上限值。 取值范围:1~128。 不传该参数时,默认值为10。
  • URI URL格式 DELETE /v3/{project_id}/instances/{instance_id}/databases/{database_name}?delete_dn_data={delete_dn_data} 参数说明 表1 路径参数 参数 是否必选 参数类型 描述 project_id 是 String 租户在某一region下的project ID。 获取方法请参见获取项目ID。 instance_id 是 String DDM实例ID。 database_name 是 String 逻辑库名称。
  • 请求示例 删除逻辑库(删除关联后端数据库实例上存储的数据)。 DELETE https://{endpoint}/v3/{project_id}/instances/{instance_id}/databases/{database_name}?delete_dn_data=true 删除逻辑库(保留关联后端数据库实例上存储的数据)。 DELETE https://{endpoint}/v3/{project_id}/instances/{instance_id}/databases/{database_name}?delete_dn_data=false
  • 响应消息 正常响应参数说明 表4 响应Body参数 参数 参数类型 描述 total_count Integer 总条数。 logical_processes Array of 表5 objects 实例的逻辑会话列表。 表5 logicalProcessesInfo 参数 参数类型 描述 id String 逻辑会话ID。 user String 当前连接的用户。 host String 所属的IP和端口。 db String 数据库名。 command String 连接状态,一般是休眠(sleep),查询(query),连接(connect)。 time String 连接状态持续的时间,单位是秒(s)。 state String 当前SQL语句的状态。 info String 当前所执行的SQL语句。 正常响应示例 { "logical_processes": [ { "id": "4564224", "user": "drdsagent", "host": "127.0.0.1:54486", "db": "None", "command": "Query", "time": "0", "state": "starting", "info": "show processlist" } ], "total_count": 1 } 异常响应 请参见异常请求结果。
  • URI URL格式 GET /v3/{project_id}/instances/{instance_id}/logical-processes?offset={offset}&limit={limit} 参数说明 表1 路径参数 参数 是否必选 参数类型 描述 project_id 是 String 租户在某一region下的project ID。 获取方法请参见获取项目ID。 instance_id 是 String DDM实例ID。 表2 Query参数 参数 是否必选 参数类型 描述 offset 否 Integer 索引位置,偏移量。 从第一条数据偏移offset条数据后开始查询,默认为0。 取值必须为数字,且不能为负数。 limit 否 Integer 查询个数上限值。 取值范围:1~128。 不传该参数时,默认值为10。 keyword 否 String 会话结果筛选关键字,支持返回结果全字段模糊匹配,长度最大255。
  • SDK列表 在开始使用之前,请确保您安装的是最新版本的SDK。使用过时的版本可能会导致兼容性问题或无法使用最新功能。您可以在 SDK中心 查询版本信息。 表 SDK列表提供了HSS服务支持的SDK列表,您可以在GitHub仓库查看SDK更新历史、获取安装包以及查看指导文档。 表1 SDK列表 编程语言 Github地址 参考文档 Java huaweicloud-sdk-java-v3 Java SDK使用指导 Python huaweicloud-sdk-python-v3 Python SDK使用指导 Go huaweicloud-sdk-go-v3 Go SDK使用指导 NodeJs huaweicloud-sdk-nodejs-v3 NodeJs SDK使用指导 PHP huaweicloud-sdk-php-v3 PHP SDK使用指导
  • 步骤四:通过外表导入 DLI 表数据 使用系统管理员dbadmin用户登录 GaussDB (DWS)数据库,默认登录gaussdb数据库即可。 执行以下SQL创建外部Server。其中OBS终端节点从1获取,AK和SK从准备工作获取,DLI终端节点从2获取。 如果DWS和DLI是同一个账户创建下,则AK和SK分别对应重复填写一次。 1 2 3 4 5 6 7 8 9 CREATE SERVER dli_server FOREIGN DATA WRAPPER DFS_FDW OPTIONS ( ADDRESS 'OBS终端节点', AC CES S_KEY 'AK值', SECRET_ACCESS_KEY 'SK值', TYPE 'DLI', DLI_ADDRESS 'DLI终端节点', DLI_ACCESS_KEY 'AK值', DLI_SECRET_ACCESS_KEY 'SK值' ); 执行以下SQL创建目标schema。 1 CREATE SCHEMA dws_data; 执行以下SQL创建外表。其中项目ID替换为3获取的实际值。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 CREATE FOREIGN TABLE dws_data.dli_pq_order ( order_id VARCHAR(14) PRIMARY KEY NOT ENFORCED, order_channel VARCHAR(32), order_time TIMESTAMP, cust_code VARCHAR(6), pay_amount DOUBLE PRECISION, real_pay DOUBLE PRECISION ) SERVER dli_server OPTIONS ( FORMAT 'parquet', ENCODING 'utf8', DLI_PROJECT_ID '项目ID', DLI_DATABASE_NAME 'dli_data', DLI_TABLE_NAME 'dli_order') DISTRIBUTE BY roundrobin; 执行以下SQL,通过外表查询DLI的表数据。 结果显示,成功访问DLI表数据。 1 SELECT * FROM dws_data.dli_pq_order; 执行以下SQL,创建一张新的本地表,用于导入DLI表数据。 1 2 3 4 5 6 CREATE TABLE dws_data.dws_monthly_order ( order_month CHAR(8), cust_code VARCHAR(6), order_count INT, total_pay_amount DOUBLE PRECISION, total_real_pay DOUBLE PRECISION ); 执行以下SQL,查询出2023年的月度订单明细,并将结果导入DWS表。 1 2 3 4 5 6 7 8 INSERT INTO dws_data.dws_monthly_order ( order_month, cust_code, order_count , total_pay_amount, total_real_pay ) SELECT TO_CHAR(order_time, 'MON-YYYY'), cust_code, COUNT(*) , SUM(pay_amount), SUM(real_pay) FROM dws_data.dli_pq_order WHERE DATE_PART('Year', order_time) = 2023 GROUP BY TO_CHAR(order_time, 'MON-YYYY'), cust_code; 执行以下SQL查询表数据。 结果显示,DLI表数据成功导入DWS数据库。 1 SELECT * FROM dws_data.dws_monthly_order;
  • 步骤三:获取GaussDB(DWS)外部服务器所需鉴权信息 获取OBS桶的终端节点。 登录OBS管理控制台。 单击桶名称,左侧选择“概览”,并记录终端节点。 访问终端节点获取DLI的终端节点。 本例(华北-北京四)为dli.cn-north-4.myhuaweicloud.com。 获取创建DLI所使用的账号的特定区域的项目ID。 鼠标悬浮在右上方的账户名,单击“我的凭证”。 左侧选择“API凭证”。 从列表中,找到DLI所属区域,本例为华北-北京四,记录区 域名 所在的项目ID。 获取账号的AK和SK,参见准备工作。
  • 支持区域 当前已上传OBS数据的区域如表1所示。 表1 区域和OBS桶名 区域 OBS桶名 华北-北京一 dws-demo-cn-north-1 华北-北京二 dws-demo-cn-north-2 华北-北京四 dws-demo-cn-north-4 华北-乌兰察布一 dws-demo-cn-north-9 华东-上海一 dws-demo-cn-east-3 华东-上海二 dws-demo-cn-east-2 华南-广州 dws-demo-cn-south-1 华南-广州友好 dws-demo-cn-south-4 中国-香港 dws-demo-ap-southeast-1 亚太-新加坡 dws-demo-ap-southeast-3 亚太-曼谷 dws-demo-ap-southeast-2 拉美-圣地亚哥 dws-demo-la-south-2 非洲-约翰内斯堡 dws-demo-af-south-1 拉美-墨西哥城一 dws-demo-na-mexico-1 拉美-墨西哥城二 dws-demo-la-north-2 莫斯科二 dws-demo-ru-northwest-2 拉美-圣保罗一 dws-demo-sa-brazil-1
  • 教程一: IAM 项目视图下的只读操作 创建用户组并授权。 使用华为云账号登录IAM控制台,创建用户组,并授予 数据仓库 服务的只读权限“DWS ReadOnlyAccess”。 创建用户并加入用户组。 在IAM控制台创建用户,并将其加入步骤1中创建的用户组。 用户登录并验证权限。 使用新创建的用户登录控制台,切换至授权区域,验证权限: 在“服务列表”中选择数据仓库服务,进入DWS主界面,单击右上角“创建数据仓库集群”,尝试创建数据仓库集群,如果无法创建(假设当前权限仅包含DWS ReadOnlyAccess),表示“DWS ReadOnlyAccess”已生效。 在“服务列表”中选择除数据仓库服务之外(假设当前策略仅包含DWS ReadOnlyAccess)的任一服务,若提示权限不足,表示“DWS ReadOnlyAccess”已生效。
  • 教程二:企业项目下的只读操作 创建用户组并授权。 使用华为云账号登录IAM控制台,创建用户组,并授予数据仓库服务的只读权限“DWS ReadOnlyAccess”。 企业项目视图下,跟资源无关的只读操作细粒度权限依旧会提示无权限访问。如事件、告警等相关接口的细粒度。 配置IAM项目视图下相关的事件与告警等只读权限。 创建如下自定义策略readonly_event_alarm: { "Version": "1.1", "Statement": [ { "Effect": "Allow", "Action": [ "dws:alarm*:list*", "dws:cluster*:list*", "dws:dms*:get*", "dws:event*:list*" ] } ] } 登录IAM控制台,创建用户组并授权刚创建的自定义策略: 创建用户并加入用户组。 在IAM控制台创建用户,并将其加入步骤1中创建的用户组。 用户登录并验证权限。 使用新创建的用户登录控制台,切换至授权区域,验证权限: 在“服务列表”中选择数据仓库服务,进入DWS主界面,单击右上角“创建数据仓库集群”,尝试创建数据仓库集群,如果无法创建(假设当前权限仅包含DWS ReadOnlyAccess),表示“DWS ReadOnlyAccess”已生效。 在“服务列表”中选择除数据仓库服务之外(假设当前策略仅包含DWS ReadOnlyAccess)的任一服务,若提示权限不足,表示“DWS ReadOnlyAccess”已生效。
  • 背景信息 如果您需要对华为云上的GaussDB(DWS)资源,为企业中的员工设置不同的访问权限,以达到不同员工之间的权限隔离,您可以使用 统一身份认证 服务(Identity and Access Management,简称IAM)进行精细的权限管理。该服务提供用户身份认证、权限分配、访问控制等功能,可以帮助您安全的控制云资源的访问。通过IAM,您可以在云账号中给员工创建IAM用户,并授权控制他们对云资源的访问范围。 场景一:您的员工中有负责软件开发的人员,您希望他们拥有GaussDB(DWS)的使用权限,但是不希望他们拥有删除集群等高危操作的权限,那么您可以使用IAM为开发人员创建用户,通过授予仅能使用GaussDB(DWS),但是不允许删除集群的权限,控制他们对GaussDB(DWS)资源的使用范围。 场景二:您希望您的员工只有GaussDB(DWS)的资源使用权限,不希望拥有其他云资源的权限,以防止资源滥用。例如只开通GaussDB(DWS)的操作权限,不能使用其他云服务。 通过IAM权限控制,有效达到云资源访问控制,避免云资源误操作。本文将指导如何配置只读权限的IAM用户。
  • JDBC问题定位 JDBC(Java Database Connectivity,java数据库连接)是应用程序访问数据库的统一标准接口,应用程序可使用JDBC连接数据库并执行SQL。 GaussDB(DWS)提供了对JDBC 4.0特性的支持,本章节提供了JCDB常见问题定位及对应报错和问题的处理方法。 产生JDBC问题的原因主要分为以下三个方面: 应用程序和应用程序框架问题。 JDBC业务功能问题。 数据库配置问题。 JDBC问题在具体业务中的表现主要分为以下三个方面: 执行报错,JDBC抛出异常。 执行效率低,耗时异常。 特性不支持,JDBC未实现的JDK接口。 JDBC问题具体分类可参见表1。 表1 JDBC问题分类 问题分类 问题原因 建立数据库连接失败 JDBC客户端配置问题:包括URL格式不对,或用户名密码错误。 网络不通。 Jar包冲突。 数据库配置问题,数据库未配置远程访问权限。 执行业务抛出异常 传入SQL有误,GaussDB(DWS)不支持。 业务处理异常,返回异常报文。 网络故障。 数据库连接超时,socket已关闭。 性能问题 SQL执行慢。 结果集过大,导致应用程序端响应慢。 用户传入SQL过长,JDBC解析慢。 功能支持问题 JDK未提供标准接口。 JDBC未实现接口。 父主题: JDBC/ODBC类
  • 处理方法 方法一:更改某个GaussDB(DWS)集群的数据库默认时区。 登录GaussDB(DWS)管理控制台。 在左侧导航栏中,单击“集群管理”。 在集群列表中找到所需要的集群,单击集群名称,进入集群“基本信息”页面。 单击“参数修改”页签,修改参数“timezone”,修改为您所在的时区,然后单击“保存”。 在“修改预览”窗口,确认修改无误后,单击“保存”。 用户可根据界面中参数“timezone”所在行的“是否重启”列,判断修改参数后无需进行重启操作。 修改“timezone”参数后无需重启集群操作 ,则修改后立即生效。 方法二:通过后台命令查询和更改数据库时区。 查询客户端时区和当前时间。其中客户端时区为UTC时区,now()函数返回当前时间。 1 2 3 4 5 6 7 8 9 10 11 SHOW time zone; TimeZone ---------- UTC (1 row) select now(); now ------------------------------- 2022-05-16 06:05:58.711454+00 (1 row) 创建数据表,其中timestamp、timestamptz是常用的时间类型。timestamp不保存时区,timestamptz保存时区。 1 2 3 4 5 6 7 8 9 CREATE TABLE timezone_test (id int, t1 timestamp, t2 timestamptz) DISTRIBUTE BY HASH (id); \d timezone_test Table "public.timezone_test" Column | Type | Modifiers --------+-----------------------------+----------- id | integer | t1 | timestamp without time zone | t2 | timestamp with time zone | 向timezone_test表插入当前时间并查询当前表。 1 2 3 4 5 6 7 8 9 10 11 12 INSERT INTO timezone_test values (1, now(), now() ); show time zone; TimeZone ---------- UTC (1 row) SELECT * FROM timezone_test; id | t1 | t2 ----+----------------------------+------------------------------- 1 | 2022-05-16 06:10:04.564599 | 2022-05-16 06:10:04.564599+00 (1 row) t1(timestamp类型)在保存数据时丢弃了时区信息,t2(timestamptz类型)保存了时区信息。 把客户端时区设置为东8区(UTC-8),再次查询timezone_test表。 1 2 3 4 5 6 7 8 9 10 11 12 SET time zone 'UTC-8'; SHOW time zone; TimeZone ---------- UTC-8 (1 row) SELECT now(); now ------------------------------- 2022-05-16 14:13:43.175416+08 (1 row) 继续插入当前时间到timezone_test表,并查询。此时t1新插入的值使用的是东8区时间,t2根据客户端时区对查询结果进行转换。 1 2 3 4 5 6 7 INSERT INTO timezone_test values (2, now(), now() ); SELECT * FROM timezone_test; id | t1 | t2 ----+----------------------------+------------------------------- 1 | 2022-05-16 06:10:04.564599 | 2022-05-16 14:10:04.564599+08 2 | 2022-05-16 14:15:03.715265 | 2022-05-16 14:15:03.715265+08 (2 rows) timestamp类型只受数据在插入时的时区影响,查询结果不受客户端时区影响。 timestamptz类型在数据插入时记录了时区信息,查询时会根据客户端时区做转换,以客户端时区显示数据。
  • 消息关键参数 发送消息体关键字 序号 字段 数据类型 可选属性 描述 HTTP 请求,响应消息体部分(遵循RFC2616) 1 deliveryInfo DeliveryInfo M 状态报告信息,对应表1 6 link Link数组 O 可选字段,对应源消息resourceURL。 表1 DeliveryInfo(消息报告通知) 序号 字段 数据类型 可选属性 描述 1 address String M 发送回执消息的发送方地址(原消息的目的方地址) 2 deliveryStatus Enum M 消息发送状态 MessageSent 消息已发送到平台,由MaaP产生。 DeliveredToTerminal R CS 消息达到终端 DeliveryImpossible 发送失败 DeliveredToNetwork 运营商网络已转短消息发送 MessageDisplayed 消息已阅 DeliveredToVms 转视频短信发送成功 DeliveredToVmsFailed 转视频短信发送失败 DeliveredTo SMS 通道转短信下发成功 DeliveredToSMSFailed 通道转短信下发失败 参见表2详细描述 3 messageId string O 源消息ID 4 description String O 状态报告相关描述,成功和失败回执都通过description增加细分描述信息。 DeliveryImpossible回执填写应用层错误码,具体请参见错误码。 DeliveredToTerminal回执填写,发送UP2.4成功回执填写UP2。 DeliveredToNetwork回执填写,转短成功回执填写 SMS 5 text String O 状态报告相关描述,全部回执都通过此字段增加细分描述信息。 DeliveryImpossible回执填写错误描述,具体请参见错误码。 表2 Chatbot下行消息的状态报告 deliveryStatus deliveryStatus含义 description 业务含义 MessageSent 消息已发出 - 消息已发送到5GMC,由MaaP平台转发到5GMC时产生。 DeliveredToTerminal 以消息的形态达到终端,包括MaaP消息和普通P2P消息送达。 UP2 以Chatbot消息形态投递到终端 DeliveryImpossible 下行消息投递失败 800 不提供网络自动回落的Chatbot消息在5GMC已超过最大可撤回时间 SVCXXX错误码 网络自动回落短信,但发送失败 DeliveredToNetwork 已转短消息发送,即转短信发送到短息终端成功。 SMS 已转短信投递到终端 MessageDisplayed 消息已阅 UP2 终端已点击打开消息
  • 发送状态报告通知请求示例 POST /openchatbot/v2/DeliveryInfoNotification HTTP/1.1 Authorization: Username="chatbottest12swt70",Password="******" Content-Type: application/json Date: Sun, 28 Jun 2020 06:23:33 GMT Accept: */* Accept-Encoding: gzip, deflate, br Cookie: JSESSIONID=A4F1AE0967E87AD57CF106D295505CA4 traceUniqueID: 504021504652012181433190002002 Host: 10.179.126.105:8451 Connection: close Content-Length: 358 { "deliveryInfo": { "address": "tel:+8612345678911", "messageId": "2827c3a6-ee61-11ea-a172-fa163e6a8a4e", "deliveryStatus": "DeliveredToTerminal", "description": "SVC5001" }, "link": [ { "rel": "OutboundMessageRequest", "href": "http://example.com/exampleAPI/messaging/v1/outbound/sip%3A12599%40botplatform.rcs.chinamobile.com/requests/27437fcf-aa6e-4656-bdb1-695477cdddd9" } ] }
  • 请求消息示例 DELETE /openchatbot/v2/sip:12024.jlf002@botplatform.rcs.chinamobile.com/files HTTP/1.1 tid: 6679391739583830575 Authorization:Username="a20a9716-8577-4e5e-8333-490df5b72e9f", Password=“******” Terminal-type: Chatbot Cache-Control: no-cache Pragma: no-cache Host: 10.120.207.128:8323 Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2 Proxy-Connection: keep-alive Connection: keep-alive
  • 请求消息示例 POST /openchatbot/v2/auditnotification HTTP/1.1 Authorization: Username="appId32itc1",Password="******" tid: 3412316345 Authstatus: 0 Date: Mon, 09 Jun 2020 06:23:33 GMT Content-Type: application/json Accept: */* Postman-Token: e3e074fa-2ff7-4f6b-81a1-24af65d7200c Accept-Encoding: gzip, deflate, br Cookie: JSESSIONID=A3AEA3BBD0158B95AF548971EF430011 traceUniqueID: 504021504652012181504150002002 Host: 10.134.204.203:8087 Connection: close Content-Length: 741 { "file-info": [{ "content-type": "image/png", "data": { "until": "2099-12-31T23:59:59Z", "url": "https://conent-5g.obs.cn-north-4.myhuaweicloud.com:443/content_audit_service/chatbotId/pictures/2d39d4d7-0711-4710-987d-f1d91209b3a7.png" }, "file-name": "logo.png", "file-size": "16307", "type": "file" }, { "content-type": "image/jpeg", "data": { "until": "2099-12-31T23:59:59Z", "url": "https://conent-5g.obs.cn-north-4.myhuaweicloud.com:443/content_audit_service/chatbotId/pictures/91bc7489-c608-4796-ac53-7ef8d9ec8de0.jpg" }, "file-name": "10k1.jpg", "file-size": "9509", "type": "thumbnail" }] }
  • 消息关键参数 发送消息消息体关键字段 序号 字段 数据类型 可选属性 描述 1 address String M 接受方地址Request-URI,群发时填群发列表中第一个地址。 2 destinationAddress String M 接收方地址To。 说明: 仅移动支持群发,群发消息中可携带接收方地址列表,多个接收方地址之间使用英文逗号分割,最多支持100个号码。 样例:"destinationAddress": "tel:+86139******30,tel:+86139******31", 为提高网络侧性能,建议群发消息相同内容单次请求不少于10个号码。 最大发送速率(每秒发送号码数)不要超过该chatbot的速率上限。 3 senderAddress String M 发送方地址From,群发时填写Chatbot的URI,广播时填写Chatbot的URI(暂不提供) 4 senderName String O 发送方名称 5 productType String O 5G产品类型,不传默认为1。 1:通知 2:营销 6 clientCorrelator string O 用户端关联数据,需要networkAPI在响应中带回内容。 7 outboundIMMessage OutboundIMMessage M 复合类型对应表1 8 taskId string O 任务 id,由北向传入。 9 taskName string O 任务名称,由北向传入。 表1 OutboundIMMessage 序号 字段 数据类型 可选属性 描述 1 contentType Enum M 消息类型。 text/plain 普通文本(包含地位位置消息)。5G消息系统中默认Chatbot下发位置信息采用Geolocation fallback SMS方式。 application/vnd.gsma.rcs-ft-http+xml,普通文件消息,可以是图片、音频、视频、名片等消息。 application/vnd.gsma.botmessage.v1.0+json,chatbot卡片消息。 multipart/mixed; boundary="[delimiter]" 携带悬浮菜单的消息。 2 conversationID string M conversationID, 会话ID,建议使用UUID,同一个会话中conversationID需保持一致。同一用户同一chatbot,会话ID保持唯一。 3 contributionID string M contributionID,与inReplyToContributionID字段配合使用,用户回复消息、点击按钮时,会在inReplyToContributionID字段携带被回复消息的contributionID,建议使用UUID,且每个消息需要重新生成一个新的uuid。 4 bodyText string M 消息内容。 contentEncoding为base64时,内容为编码后的base64字符串。 contentType为"text/plain"时,内容为字符串。 contentType为其他的类型时,内容为json对象。 5 subject string O 主题 6 destinationTerminal string O 目的终端 7 reportRequest Enum数组 O 状态事件报告列表,每个状态事件的可选值为: Sent:消息已发送到网络中的下一节点 Delivered: 消息已发送到被叫侧用户 Displayed:消息已在被叫侧终端上显示 Failed: 消息没有发送到被叫侧 Interworking:消息转短信或转彩信 8 inReplyToContributionID string O 标识是对一条上行消息的回复,主动下发消息时不用携带,由上行消息触发的下行消息必须携带,值是上行消息中的contributionID。上行消息存在有效期,若超过有效期则本条交互消息无法下发,当前为30分钟。 9 contentEncoding Enum O 消息内容(bodyText元素的内容)编码方式。 缺省,utf8字符编码。 base64,base64编码。 10 shortMessageSupported string O 是否转短信。 false:不转,true:转,缺省false 11 storeSupported string O 是否离线存储。 false:不存也不重试,true:存,缺省true 12 serviceCapability ServiceCapability数组 O 由SAG赋默认值。 capabilityId=”chatbotSA” version=” +g.gsma.rcs.botversion="#=2"” 13 imFormat Enum O IM消息格式,可选值包括IM 14 smsBodyText string O 转短消息时的短信内容。 转短标志为false时此字段无效。 15 trafficType string O 流量类型标识,值如 advertisement、payment、premium、subscription、plugin
共100000条