华为云用户手册

  • 任务示例 使用如下命令连接数据库。 gsql -d gaussdb -p 8000 gaussdb为需要连接的数据库名称,8000为CN的端口号。 连接成功后,系统显示类似如下信息: gsql (( GaussDB Kernel 503.1.XXX build f521c606) compiled at 2021-09-16 14:55:22 commit 2935 last mr 6385 release) Non-SSL connection (SSL connection is recommended when requiring high-security) Type "help" for help. 查看gsql的帮助信息。具体执行命令请参见表1。 表1 使用gsql联机帮助 描述 示例 查看版权信息 \copyright 查看GaussDB支持的SQL语句的帮助 查看GaussDB支持的SQL语句的帮助 例如,查看GaussDB支持的所有SQL语句: 1 2 3 4 5 gaussdb=# \h Available help: ABORT ALTER AGGREGATE ... ... 例如,查看CREATE DATABASE命令的参数可使用下面的命令: 1 2 3 4 5 6 7 8 9 10 11 12 13 gaussdb=# \help CREATE DATABASE Command: CREATE DATABASE Description: create a new database Syntax: CREATE DATABASE database_name [ [ WITH ] {[ OWNER [=] user_name ]| [ TEMPLATE [=] template ]| [ ENCODING [=] encoding ]| [ LC_COLLATE [=] lc_collate ]| [ LC_CTYPE [=] lc_ctype ]| [ DBCOMPATIBILITY [=] compatibility_type ]| [ TABLESPACE [=] tablespace_name ]| [ CONNECTION LIMIT [=] connlimit ]}[...] ]; 查看gsql命令的帮助 例如,查看gsql支持的命令: 1 2 3 4 5 6 7 gaussdb=# \? General \copyright show GaussDB Kernel usage and distribution terms \g [FILE] or ; execute query (and send results to file or |pipe) \h(\help) [NAME] help on syntax of SQL commands, * for all commands \q quit gsql ... ...
  • 其他故障 出现因“总线错误”(Bus error)导致的core dump或异常退出 一般情况下出现此种问题,是进程运行过程中加载的共享动态库(在Linux为.so文件)出现变化;或者进程二进制文件本身出现变化,导致操作系统加载机器的执行码或者加载依赖库的入口发生变化,操作系统出于保护目的将进程杀死,产生core dump文件。 解决此问题,重试便可。同时请尽可能避免在升级等运维操作过程中,在集群内部运行业务程序,避免升级时因替换文件产生此问题。 此故障的core dump文件的可能堆栈是dl_main及其子调用,它是操作系统用来初始化进程做共享动态库加载的。如果进程已经初始化,但是共享动态库还未加载完成,严格意义上来说,进程并未完全启动。
  • 创建连接故障 gsql: could not connect to server: No route to host 此问题一般是指定了不可达的地址或者端口导致的。请检查-h参数与-p参数是否添加正确。 gsql: FATAL: Invalid username/password,login denied. 此问题一般是输入了错误的用户名和密码导致的,请联系数据库管理员,确认用户名和密码的正确性。 gsql: FATAL: Forbid remote connection with trust method! 数据库由于安全问题,禁止远程登录时使用trust模式。这时需要修改pg_hba.conf里的连接认证信息。请联系管理员处理。 请不要修改pg_hba.conf中数据库集群主机的相关设置,否则可能导致数据库功能故障。建议业务应用部署在数据库集群之外,而非集群内部。 在CN所在的主机连接数据库,添加“-h 127.0.0.1”可以连接,去掉后无法连接问题。 通过执行SQL语句“show unix_socket_directory”检查数据库CN使用的Unix套接字目录,是否与shell中的环境变量$PGHOST一致。 如果检查结果不一致,那么修改PGHOST环境变量到GUC参数unix_socket_directory指向的目录便可。 The "libpq.so" loaded mismatch the version of gsql, please check it. 此问题是由于环境中使用的libpq.so的版本与gsql的版本不匹配导致的,请通过“ldd gsql”命令确认当前加载的libpq.so的版本,并通过修改LD_LIBRARY_PATH环境变量来加载正确的libpq.so。 请参照下面示例,修改LD_LIBRARY_PATH环境变量。其中${path_to_correct_libpq_dir}表示实际环境中正确libpq.so所在目录: export LD_LIBRARY_PATH=${path_to_correct_libpq_dir}:$LD_LIBRARY_PATH gsql: symbol lookup error: xxx/gsql: undefined symbol: libpqVersionString 此问题是由于环境中使用的libpq.so的版本与gsql的版本不匹配导致的(也有可能是环境中存在PostgreSQL的libpq.so),请通过“ldd gsql”命令确认当前加载的libpq.so的版本,并通过修改LD_LIBRARY_PATH环境变量来加载正确的libpq.so。 gsql: connect to server failed: Connection timed out Is the server running on host "xx.xxx.xxx.xxx" and accepting TCP/IP connections on port xxxx? 此问题是由于网络连接故障造成。请检查客户端与数据库服务器间的网络连接。如果发现从客户端无法PING到数据库服务器端,则说明网络连接出现故障。请联系网络管理人员排查解决。 ping -c 4 10.10.10.1 PING 10.10.10.1 (10.10.10.1) 56(84) bytes of data. From 10.10.10.1: icmp_seq=2 Destination Host Unreachable From 10.10.10.1 icmp_seq=2 Destination Host Unreachable From 10.10.10.1 icmp_seq=3 Destination Host Unreachable From 10.10.10.1 icmp_seq=4 Destination Host Unreachable --- 10.10.10.1 ping statistics --- 4 packets transmitted, 0 received, +4 errors, 100% packet loss, time 2999ms gsql: FATAL: permission denied for database "gaussdb" DETAIL: User does not have CONNECT privilege. 此问题是由于用户不具备访问该数据库的权限,可以使用如下方法解决。 使用管理员用户dbadmin连接数据库。 gsql -d gaussdb -U dbadmin -p 8000 赋予该用户访问数据库的权限。 GRANT CONNECT ON DATABASE gaussdb TO user1; 实际上,常见的许多错误操作也可能产生用户无法连接上数据库的现象。如用户连接的数据库不存在,用户名或密码输入错误等。这些错误操作在客户端工具也有相应的提示信息。 gsql -d gaussdb -p 8000 gsql: FATAL: database "gaussdb" does not exist gsql -d gaussdb -U user1 -p 8000 Password for user user1: gsql: FATAL: Invalid username/password,login denied. gsql: FATAL: sorry, too many clients already,active/non-active: 197/3. 此问题是由于系统连接数量超过了最大连接数量。请联系数据库DBA进行会话连接数管理,释放无用会话。 关于查看用户会话连接数的方法如表1。 会话状态可以在视图PG_STAT_ACTIVITY中查看。无用会话可以使用函数pg_terminate_backend进行释放。 select datid,pid,state from pg_stat_activity; datid | pid | state -------+-----------------+-------- 13205 | 139834762094352 | active 13205 | 139834759993104 | idle (2 rows) 其中pid的值即为该会话的线程ID。根据线程ID结束会话。 SELECT PG_TERMINATE_BACKEND(139834759993104); 显示类似如下信息,表示结束会话成功。 PG_TERMINATE_BACKEND ---------------------- t (1 row) 表1 查看会话连接数 描述 命令 查看指定用户的会话连接数上限。 执行如下命令查看连接到指定用户USER1的会话连接数上限。其中-1表示没有对用户user1设置连接数的限制。 SELECT ROLNAME,ROLCONNLIMIT FROM PG_ROLES WHERE ROLNAME='user1'; rolname | rolconnlimit ---------+-------------- user1 | -1 (1 row) 查看指定用户已使用的会话连接数。 执行如下命令查看指定用户USER1已使用的会话连接数。其中,1表示USER1已使用的会话连接数。 SELECT COUNT(*) FROM dv_sessions WHERE USERNAME='user1'; count ------- 1 (1 row) 查看指定数据库的会话连接数上限。 执行如下命令查看连接到指定数据库gaussdb的会话连接数上限。其中-1表示没有对数据库gaussdb设置连接数的限制。 SELECT DATNAME,DATCONNLIMIT FROM PG_DATABASE WHERE DATNAME='gaussdb'; datname | datconnlimit ----------+-------------- gaussdb | -1 (1 row) 查看指定数据库已使用的会话连接数。 执行如下命令查看指定数据库gaussdb上已使用的会话连接数。其中,1表示数据库gaussdb上已使用的会话连接数。 SELECT COUNT(*) FROM PG_STAT_ACTIVITY WHERE DATNAME='gaussdb'; count ------- 1 (1 row) 查看所有用户已使用会话连接数。 执行如下命令查看所有用户已使用的会话连接数。 SELECT COUNT(*) FROM dv_sessions; count ------- 10 (1 row) gsql: wait xxx.xxx.xxx.xxx:xxxx timeout expired gsql在向数据库发起连接的时候,会有5分钟超时机制,如果在这个超时时间内,数据库未能正常的对客户端请求进行校验和身份认证,那么gsql会退出当前会话的连接过程,并报出如上错误。 一般来说,此问题是由于连接时使用的-h参数及-p参数指定的连接主机及端口有误(即错误信息中的xxx部分),导致通信故障;极少数情况是网络故障导致。要排除此问题,请检查数据库的主机名及端口是否正确。 gsql: could not receive data from server: Connection reset by peer. 同时,检查CN日志中出现类似如下日志“ FATAL: cipher file "/data/coordinator/server.key.cipher" has group or world access”,一般是由于数据目录或部分关键文件的权限被误操作篡改导致。请参照其他正常实例下的相关文件权限,修改回来便可。 gsql: FATAL: GSS authentication method is not allowed because XXXX user password is not disabled. 目标CN的pg_hba.conf里配置了当前客户端IP使用"gss"方式来做认证,该认证算法不支持用作客户端的身份认证,请修改到"sha256"后再试。请联系管理员处理。 请不要修改pg_hba.conf中数据库集群主机的相关设置,否则可能导致数据库功能故障。 建议业务应用部署在数据库集群之外,而非集群内部。
  • 示例 以把一个查询分成多行输入为例。注意提示符的变化: 1 2 3 4 5 gaussdb=# CREATE TABLE HR.areaS( gaussdb(# area_ID NUMBER, gaussdb(# area_NAME VARCHAR2(25) gaussdb(# )tablespace EXAMPLE; CREATE TABLE 查看表的定义: 1 2 3 4 5 6 gaussdb=# \d HR.areaS Table "hr.areas" Column | Type | Modifiers -----------+-----------------------+----------- area_id | numeric | not null area_name | character varying(25) | 向HR.areaS表插入四行数据: 1 2 3 4 5 6 7 8 gaussdb=# INSERT INTO HR.areaS (area_ID, area_NAME) VALUES (1, 'Europe'); INSERT 0 1 gaussdb=# INSERT INTO HR.areaS (area_ID, area_NAME) VALUES (2, 'Americas'); INSERT 0 1 gaussdb=# INSERT INTO HR.areaS (area_ID, area_NAME) VALUES (3, 'Asia'); INSERT 0 1 gaussdb=# INSERT INTO HR.areaS (area_ID, area_NAME) VALUES (4, 'Middle East and Africa'); INSERT 0 1 切换提示符: 1 2 gaussdb=# \set PROMPT1 '%n@%m %~%R%#' omm@[local] gaussdb=# 查看表: 1 2 3 4 5 6 7 8 omm@[local] gaussdb=# SELECT * FROM HR.areaS; area_id | area_name ---------+------------------------ 1 | Europe 4 | Middle East and Africa 2 | Americas 3 | Asia (4 rows) 可以用\pset命令以不同的方法显示表: 1 2 3 4 5 6 7 8 9 10 11 12 omm@[local] gaussdb=# \pset border 2 Border style is 2. omm@[local] gaussdb=# SELECT * FROM HR.areaS; +---------+------------------------+ | area_id | area_name | +---------+------------------------+ | 1 | Europe | | 2 | Americas | | 3 | Asia | | 4 | Middle East and Africa | +---------+------------------------+ (4 rows) 1 2 3 4 5 6 7 8 9 10 omm@[local] gaussdb=# \pset border 0 Border style is 0. omm@[local] gaussdb=# SELECT * FROM HR.areaS; area_id area_name ------- ---------------------- 1 Europe 2 Americas 3 Asia 4 Middle East and Africa (4 rows) 使用元命令: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 omm@[local] gaussdb=# \a \t \x Output format is unaligned. Showing only tuples. Expanded display is on. omm@[local] gaussdb=# SELECT * FROM HR.areaS; area_id|2 area_name|Americas area_id|1 area_name|Europe area_id|4 area_name|Middle East and Africa area_id|3 area_name|Asia omm@[local] gaussdb=#
  • 操作步骤 使用gsql连接到GaussDB服务器。 gsql工具使用-d参数指定目标数据库名、-U参数指定数据库用户名、-h参数指定主机名、-p参数指定端口号信息。 若未指定数据库名称,则使用初始化时默认生成的数据库名称;若未指定数据库用户名,则默认使用当前操作系统用户作为数据库用户名;当某个值没有前面的参数(-d、-U等)时,若连接的命令中没有指定数据库名(-d)则该参数会被解释成数据库名;如果已经指定数据库名(-d)而没有指定数据库用户名(-U)时,该参数则会被解释成数据库用户名。 示例1,使用omm用户连接到本机gaussdb数据库的8000端口。 gsql -d gaussdb -p 8000 示例2,使用jack用户连接到远程主机gaussdb数据库的8000端口。 gsql -h 10.180.123.163 -d gaussdb -U jack -p 8000 示例3,参数gaussdb和omm不属于任何选项时,分别被解释成了数据库名和用户名。 gsql gaussdb omm -p 8000 等效于 gsql -d gaussdb -U omm -p 8000 详细的gsql参数请参见命令参考。 执行SQL语句。 以创建数据库human_staff为例。 1 2 CREATE DATABASE human_staff; CREATE DATABASE 通常,输入的命令行在遇到分号的时候结束。如果输入的命令行没有错误,结果就会输出到屏幕上。 执行gsql元命令。 以列出GaussDB中所有的数据库和描述信息为例。 1 2 3 4 5 6 7 8 9 10 11 12 gaussdb=# \l List of databases Name | Owner | Encoding | Collate | Ctype | Access privileges ----------------+----------+-----------+---------+-------+----------------------- human_resource | omm | SQL_ASCII | C | C | postgres | omm | SQL_ASCII | C | C | template0 | omm | SQL_ASCII | C | C | =c/omm + | | | | | omm=CTc/omm template1 | omm | SQL_ASCII | C | C | =c/omm + | | | | | omm=CTc/omm human_staff | omm | SQL_ASCII | C | C | (5 rows) 更多gsql元命令请参见元命令参考。
  • PATTERN 很多\d命令都可以用一个PATTERN参数来指定要被显示的对象名称。在最简单的情况下,PATTERN正好就是该对象的准确名称。在PATTERN中的字符通常会被变成小写形式(就像在SQL名称中那样),例如\dt FOO将会显示名为foo的表。就像在SQL名称中那样,把PATTERN放在双引号中可以阻止它被转换成小写形式。如果需要在一个PATTERN中包括一个真正的双引号字符,则需要把它写成两个相邻的双引号,这同样是符合SQL引用标识符的规则。例如,\dt "FOO""BAR"将显示名为FOO"BAR(不是foo"bar)的表。和普通的SQL名称规则不同,不能只在PATTERN的一部分周围放上双引号,例如\dt FOO"FOO"BAR将会显示名为fooFOObar的表。 不使用PATTERN参数时,\d命令会显示当前schema搜索路径中可见的全部对象——这等价于用*作为PATTERN。所谓对象可见是指可以直接用名称引用该对象,而不需要用schema来进行限定。要查看数据库中所有的对象而不管它们的可见性,可以把*.*用作PATTERN。 如果放在一个PATTERN中,*将匹配任意字符序列(包括空序列),而?会匹配任意的单个字符(这种记号方法就像 Unix shell 的文件名PATTERN一样)。例如,\dt int*会显示名称以int开始的表。但是如果被放在双引号内,*和?就会失去这些特殊含义而变成普通的字符。 包含一个点号(.)的PATTERN被解释为一个schema名称模式后面跟上一个对象名称模式。例如,\dt foo*.*bar*会显示名称以foo开始的schema中所有名称包括bar的表。如果没有出现点号,那么模式将只匹配当前schema搜索路径中可见的对象。同样,双引号内的点号会失去其特殊含义并且变成普通的字符。 高级用户可以使用字符类等正则表达式记法,如[0-9]可以匹配任意数字。所有的正则表达式特殊字符都按照POSIX正则表达式所说的工作。以下字符除外: .会按照上面所说的作为一种分隔符。 *会被翻译成正则表达式记号.*。 ?会被翻译成.。 $则按字面意思匹配。 根据需要,可以通过书写?、(R+|)、(R|)和R?来分别模拟PATTERN字符.、R*和R?。$不需要作为一个正则表达式字符,因为PATTERN必须匹配整个名称,而不是像正则表达式的常规用法那样解释(换句话说,$会被自动地追加到PATTERN上)。如果不希望该PATTERN的匹配位置被固定,可以在开头或者结尾写上*。注意在双引号内,所有的正则表达式特殊字符会失去其特殊含义并且按照其字面意思进行匹配。另外,在操作符名称PATTERN中(即\do的PATTERN参数),正则表达式特殊字符也按照字面意思进行匹配。
  • 元命令 元命令的详细说明请参见表1、表2、表3、表4、表6、表8、表9、表10、表12。 以下命令中所提到的FILE代表文件路径。此路径可以是绝对路径(如/home/gauss/file.txt),也可以是相对路径(file.txt,file.txt会默认在用户执行gsql命令所在的路径下创建)。 表1 一般的元命令 参数 参数说明 取值范围 \copyright 显示GaussDB的版本和版权信息。 - \g [FILE] or ; 执行查询(并将结果发送到文件或管道)。 - \h(\help) [NAME] 给出指定SQL语句的语法帮助。 如果没有给出NAME,gsql将列出可获得帮助的所有命令。如果NAME是一个星号(*),则显示所有SQL语句的语法帮助。 \parallel [on [num]|off] 控制并发执行开关。 on:打开控制并发执行开关,且最大并发数为num。 off:关闭控制并发执行开关。 说明: 不支持事务中开启并发执行以及并发中开启事务。 不支持\d这类元命令的并发。 并发select返回结果混乱问题,此为客户可接受,core、进程停止响应不可接受。 不推荐在并发中使用set语句,否则导致结果与预期不一致。 不支持创建临时表!如需使用临时表,需要在开启parallel之前创建好,并在parallel内部使用。parallel内部不允许创建临时表。 \parallel执行时最多会启动num个独立的gsql进程连接服务器。 \parallel中所有作业的持续时间不能超过session_timeout,否则可能会导致并发执行过程中断连。 num的默认值:1024。 须知: 服务器能接受的最大连接数受max_connection及当前已有连接数限制。 设置num时请考虑服务器当前可接受的实际连接数合理指定。 \q 退出gsql程序。在一个脚本文件里,只在脚本终止的时候执行。 - 表2 查询缓存区元命令 参数 参数说明 \e [FILE] [LINE] 使用外部编辑器编辑查询缓冲区(或者文件)。 \ef [FUNCNAME [LINE]] 使用外部编辑器编辑函数定义。如果指定了LINE(即行号),则光标会指到函数体的指定行。 \p 打印当前查询缓冲区到标准输出。 \r 重置(或清空)查询缓冲区。 \w FILE 将当前查询缓冲区输出到文件。 表3 输入/输出元命令 参数 参数说明 \copy { table [ ( column_list ) ] | ( query ) } { from | to } { filename | stdin | stdout | pstdin | pstdout }[LOAD] [LOAD_DISCARD 'string'] [ with ] [ binary ] [ oids ] [ delimiter [ as ] 'character' ] [ null [ as ] 'string' ] [ useeof ] [ csv [ header ] [ quote [ as ] 'character' ] [ escape [ as ] 'character' ] [ force quote column_list | * ] [ force not null column_list ] ] [parallel integer] 在任何gsql客户端登录数据库成功后可以执行导入导出数据,这是一个运行SQL COPY命令的操作,但不是读取或写入指定文件的服务器,而是读取或写入文件,并在服务器和本地文件系统之间路由数据。这意味着文件的可访问性和权限是本地用户的权限,而不是服务器的权限,并且不需要数据库初始化用户权限。 说明: \COPY只适合小批量,格式良好的数据导入,导入数据应优先选择GDS或COPY。 \COPY 可以指定数据导入时的客户端数量,从而实现数据文件的并行导入,目前并发数范围为[1, 8]。 \COPY并行导入目前存在以下约束: 临时表的并行导入不支持、在事务内的并行导入不支持、对二进制文件的并行导入不支持、数据导入支持AES128加密时不支持以及COPY选项中存在EOL。在这些情况下,即使指定了parallel参数,仍然会走非并行流程。 \COPY的text格式和csv格式均支持header功能。 其中LOAD功能为gs_loader进行语法转换后调用copy的标识,非主动调用功能。 其中LOAD_DISCARD功能为gs_loader解析后discard文件路径,非主动调用功能。 \echo [STRING] 把字符串写到标准输出。 \i FILE 从文件FILE中读取内容,并将其当作输入,执行查询。 \i+ FILE KEY 执行加密文件中的命令。 \ir FILE 和\i类似,只是相对于存放当前脚本的路径。 \ir+ FILE KEY 和\i+类似,只是相对于存放当前脚本的路径。 \o [FILE] 把所有的查询结果发送到文件里。 \qecho [STRING] 把字符串写到查询结果输出流里。 表4中的选项S表示显示系统对象,+表示显示对象附加的描述信息。PATTERN用来指定要被显示的对象名称。 表4 显示信息元命令 参数 参数说明 取值范围 示例 \d[S+] 列出当前search_path中模式下所有的表、视图和序列。当search_path中不同模式存在同名对象时,只显示search_path中位置靠前模式下的同名对象。 - 列出当前search_path中模式下所有的表、视图和序列。 1 gaussdb=# \d \d[S+] NAME 列出指定表、视图和索引的结构。当search_path中不同模式存在同名对象时,只显示search_path中位置靠前模式下的同名对象。 - 假设存在表a,列出指定表a的结构。 1 gaussdb=# \dtable+ a \d+ [PATTERN] 列出所有表、视图和索引。当search_path中不同模式存在同名对象时,只显示search_path中位置靠前模式下的同名对象。 如果声明了PATTERN,只显示名称匹配PATTERN的表、视图和索引。 列出所有名称以f开头的表、视图和索引。 1 gaussdb=# \d+ f* \da[S] [PATTERN] 列出所有可用的聚集函数,以及它们操作的数据类型和返回值类型。当search_path中不同模式存在同名对象时,只显示search_path中位置靠前模式下的同名对象。 如果声明了PATTERN,只显示名称匹配PATTERN的聚集函数。 列出所有名称以f开头可用的聚集函数,以及它们操作的数据类型和返回值类型。 1 gaussdb=# \da f* \db[+] [PATTERN] 列出所有可用的表空间。 如果声明了PATTERN,只显示名称匹配PATTERN的表空间。 列出所有名称以p开头的可用表空间。 1 gaussdb=# \db p* \dc[S+] [PATTERN] 列出所有字符集之间的可用转换。当search_path中不同模式存在同名对象时,只显示search_path中位置靠前模式下的同名对象。 如果声明了PATTERN,只显示名称匹配PATTERN的转换。 列出所有字符集之间的可用转换。 1 gaussdb=# \dc * \dC[+] [PATTERN] 列出所有类型转换。当search_path中不同模式存在同名对象时,只显示search_path中位置靠前模式下的同名对象。 PATTERN需要使用实际类型名,不能使用别名。 如果声明了PATTERN,只显示名称匹配PATTERN的转换。 列出所有名称以c开头的类型转换。 1 gaussdb=# \dC c* \dd[S] [PATTERN] 显示所有匹配PATTERN的描述。当search_path中不同模式存在同名对象时,只显示search_path中位置靠前模式下的同名对象。 如果没有给出参数,则显示所有可视对象。“对象”包括:聚集、函数、操作符、类型、关系(表、视图、索引、序列、大对象)、规则。 列出所有可视对象。 1 gaussdb=# \dd \ddp [PATTERN] 显示所有默认的使用权限。 如果指定了PATTERN,只显示名称匹配PATTERN的使用权限。 列出所有默认的使用权限。 1 gaussdb=# \ddp \dD[S+] [PATTERN] 列出所有可用域。当search_path中不同模式存在同名对象时,只显示search_path中位置靠前模式下的同名对象。 如果声明了PATTERN,只显示名称匹配PATTERN的域。 列出所有可用域。 1 gaussdb=# \dD \det[+] [PATTERN] 列出所有的外部表。当search_path中不同模式存在同名对象时,只显示search_path中位置靠前模式下的同名对象。 如果声明了PATTERN,只显示名称匹配PATTERN的表。 列出所有的外部表。 1 gaussdb=# \det \des[+] [PATTERN] 列出所有的外部服务器。 如果声明了PATTERN,只显示名称匹配PATTERN的服务器。 列出所有的外部服务器。 1 gaussdb=# \des \deu[+] [PATTERN] 列出用户映射信息。 如果声明了PATTERN,只显示名称匹配PATTERN的信息。 列出用户映射信息。 1 gaussdb=# \deu \dew[+] [PATTERN] 列出封装的外部数据。 如果声明了PATTERN,只显示名称匹配PATTERN的数据。 列出封装的外部数据。 1 gaussdb=# \dew \df[antw][S+] [PATTERN] 列出所有可用函数,以及它们的参数和返回的数据类型。a代表聚集函数,n代表普通函数,t代表触发器,w代表窗口函数。当search_path中不同模式存在同名对象时,只显示search_path中位置靠前模式下的同名对象。 如果声明了PATTERN,只显示名称匹配PATTERN的函数。 列出所有可用函数,以及它们的参数和返回的数据类型。 1 gaussdb=# \df \dF[+] [PATTERN] 列出所有的文本搜索配置信息。当search_path中不同模式存在同名对象时,只显示search_path中位置靠前模式下的同名对象。 如果声明了PATTERN,只显示名称匹配PATTERN的配置信息。 列出所有的文本搜索配置信息。 1 gaussdb=# \dF+ \dFd[+] [PATTERN] 列出所有的文本搜索字典。当search_path中不同模式存在同名对象时,只显示search_path中位置靠前模式下的同名对象。 如果声明了PATTERN,只显示名称匹配PATTERN的字典。 列出所有的文本搜索字典。 1 gaussdb=# \dFd \dFp[+] [PATTERN] 列出所有的文本搜索分析器。当search_path中不同模式存在同名对象时,只显示search_path中位置靠前模式下的同名对象。 如果声明了PATTERN,只显示名称匹配PATTERN的分析器。 列出所有的文本搜索分析器。 1 gaussdb=# \dFp \dFt[+] [PATTERN] 列出所有的文本搜索模板。当search_path中不同模式存在同名对象时,只显示search_path中位置靠前模式下的同名对象。 如果声明了PATTERN,只显示名称匹配PATTERN的模板。 列出所有的文本搜索模板。 1 gaussdb=# \dFt \dg[+] [PATTERN] 列出所有数据库角色。 说明: 因为用户和群组的概念被统一为角色,所以这个命令等价于\du。为了和以前兼容,所以保留两个命令。 如果指定了PATTERN,只显示名称匹配PATTERN的角色。 列出名称为“j?e”所有数据库角色(“?”表示任一字符)。 1 gaussdb=# \dg j?e \dl \lo_list的别名,显示一个大对象的列表。 - 列出所有的大对象。 1 gaussdb=# \dl \dL[S+] [PATTERN] 列出可用的程序语言。 如果指定了PATTERN,只列出名称匹配PATTERN的语言。 列出可用的程序语言。 1 gaussdb=# \dL \dm[S+] [PATTERN] 列出物化视图。当search_path中不同模式存在同名对象时,只显示search_path中位置靠前模式下的同名对象。 如果指定了PATTERN,只列出名称匹配PATTERN的物化视图。 列出物化视图。 1 gaussdb=# \dm \dn[S+] [PATTERN] 列出所有模式(名称空间)。如果向命令追加+,会列出每个模式相关的权限及描述。 如果声明了PATTERN,只列出名称匹配PATTERN的模式名。缺省时,只列出用户创建的模式。 列出所有名称以d开头的模式以及相关信息。 1 gaussdb=# \dn+ d* \do[S] [PATTERN] 列出所有可用的操作符,以及它们的操作数和返回的数据类型。当search_path中不同模式存在同名对象时,只显示search_path中位置靠前模式下的同名对象。 如果声明了PATTERN,只列出名称匹配PATTERN的操作符。缺省时,只列出用户创建的操作符。 列出所有可用的操作符,以及它们的操作数和返回的数据类型。 1 gaussdb=# \do \dO[S+] [PATTERN] 列出排序规则。当search_path中不同模式存在同名对象时,只显示search_path中位置靠前模式下的同名对象。 如果声明了PATTERN,只列出名称匹配PATTERN的规则。缺省时,只列出用户创建的规则。 列出排序规则。 1 gaussdb=# \dO \dp [PATTERN] 列出一列可用的表、视图以及相关的权限信息。当search_path中不同模式存在同名对象时,只显示search_path中位置靠前模式下的同名对象。 \dp显示结果如下: rolename=xxxx/yyyy --赋予一个角色的权限 =xxxx/yyyy --赋予public的权限 xxxx表示赋予的权限,yyyy表示授予这个权限的角色。权限的参数说明请参见表5。 如果指定了PATTERN,只列出名称匹配PATTERN的表、视图。 列出一列可用的表、视图以及相关的权限信息。 1 gaussdb=# \dp \drds [PATTERN1 [PATTERN2]] 列出所有修改过的配置参数。这些设置可以是针对角色的、针对数据库的或者同时针对两者的。PATTERN1和PATTERN2表示要列出的角色PATTERN和数据库PATTERN。 如果声明了PATTERN,只列出名称匹配PATTERN的规则。缺省或指定*时,则会列出所有设置。 列出数据库所有修改过的配置参数。 1 gaussdb=# \drds * dbname \dT[S+] [PATTERN] 列出所有的数据类型。当search_path中不同模式存在同名对象时,只显示search_path中位置靠前模式下的同名对象。 如果指定了PATTERN,只列出名称匹配PATTERN的类型。 列出所有的数据类型。 1 gaussdb=# \dT \du[+] [PATTERN] 列出所有数据库角色。 说明: 因为用户和群组的概念被统一为角色,所以这个命令等价于\dg。为了和以前兼容,所以保留两个命令。 如果指定了PATTERN,则只列出名称匹配PATTERN的角色。 列出所有数据库角色。 1 gaussdb=# \du \dE[S+] [PATTERN] \di[S+] [PATTERN] \ds[S+] [PATTERN] \dt[S+] [PATTERN] \dv[S+] [PATTERN] 这一组命令,字母E,i,s,t和v分别代表着外部表,索引,序列,表和视图。可以以任意顺序指定其中一个或者它们的组合来列出这些对象。当search_path中不同模式存在同名对象时,只显示search_path中位置靠前模式下的同名对象。例如:\dit列出所有的索引和表。在命令名称后面追加+,则每一个对象的物理尺寸以及相关的描述也会被列出。 如果指定了PATTERN,只列出名称匹配该PATTERN的对象。默认情况下只会显示用户创建的对象。通过PATTERN或者S修饰符可以把系统对象包括在内。 列出所有的索引和视图。 1 gaussdb=# \div \dx[+] [PATTERN] 列出安装数据库的扩展信息。 如果指定了PATTERN,则只列出名称匹配PATTERN的扩展信息。 列出安装数据库的扩展信息。 1 gaussdb=# \dx \l[+] 列出服务器上所有数据库的名称、所有者、字符集编码以及使用权限。 - 列出服务器上所有数据库的名称、所有者、字符集编码以及使用权限。 1 gaussdb=# \l \sf[+] FUNCNAME 显示函数的定义。 说明: 对于带圆括号的函数名,需要在函数名两端添加双引号,并且在双引号后面加上参数类型列表。参数类型列表两端添加圆括号。 - 假设存在函数function_a和函数名带圆括号的函数func()name,列出函数的定义。 1 2 3 gaussdb=# \sf function_a gaussdb=# \sf "func()name"(argtype1, argtype2) \z [PATTERN] 列出数据库中所有表、视图和序列,以及它们相关的访问特权。 如果给出任何pattern ,则被当成一个正则表达式,只显示匹配的表、视图、序列。 列出数据库中所有表、视图和序列,以及它们相关的访问特权。 1 gaussdb=# \z 表5 权限的参数说明 参数 参数说明 r SELECT:允许对指定的表、视图读取数据。 w UPDATE:允许对指定表更新字段。 a INSERT:允许对指定表插入数据。 d DELETE:允许删除指定表中的数据。 D TRUNCATE:允许清理指定表中的数据。 x REFEREN CES :允许创建外键约束,分布式场景暂不支持。 t TRIGGER:允许在指定表上创建触发器。 X EXECUTE:允许使用指定的函数,以及利用这些函数实现的操作符。 U USAGE: 对于过程语言,允许用户在创建函数时,指定过程语言。 对于模式,允许访问包含在指定模式中的对象。 对于序列,允许使用nextval函数。 C CREATE: 对于数据库,允许在该数据库里创建新的模式。 对于模式,允许在该模式中创建新的对象。 对于表空间,允许在其中创建表,以及允许创建数据库和模式的时候把该表空间指定为其缺省表空间。 c CONNECT:允许用户连接到指定的数据库。 T TEMPORARY:允许创建临时表。 A ALTER:允许用户修改指定对象的属性。 P DROP:允许用户删除指定的对象。 m COMMENT:允许用户定义或修改指定对象的注释。 i INDEX:允许用户在指定表上创建索引。 v VACUUM:允许用户对指定的表执行ANALYZE和VACUUM操作。 * 给前面权限的授权选项。 表6 格式化元命令 参数 参数说明 \a 对齐模式和非对齐模式之间的切换。 \C [STRING] 把正在打印的表的标题设置为一个查询的结果或者取消这样的设置。 \f [STRING] 对于不对齐的查询输出,显示或者设置域分隔符。 \H 若当前模式为文本格式,则切换为HTML输出格式。 若当前模式为HTML格式,则切换回文本格式。 \pset NAME [VALUE] 设置影响查询结果表输出的选项。NAME的取值见表7。 \t [on|off] 切换输出的字段名的信息和行计数脚注。 \T [STRING] 指定在使用HTML输出格式时放在table标签里的属性。如果参数为空,不设置。 \x [on|off|auto] 切换扩展行格式。 表7 可调节的打印选项 选项 选项说明 取值范围 border value必须是一个数字。通常这个数字越大,表的边界就越宽线就越多,但是这个取决于特定的格式。 在HTML格式下,取值范围为大于0的整数。 在其他格式下,取值范围: 0:无边框 1:内部分隔线 2:台架 expanded (或x) 在正常和扩展格式之间切换。 当打开扩展格式时,查询结果用两列显示,字段名称在左、数据在右。这个模式在数据无法放进通常的“水平”模式的屏幕时很有用。 在正常格式下,当查询输出的格式比屏幕宽时,用扩展格式。正常格式只对aligned和wrapped格式有用。 fieldsep 声明域分隔符来实现非对齐输出。这样就可以创建其他程序希望的制表符或逗号分隔的输出。要设置制表符域分隔符,键入\pset fieldsep '\t'。缺省域分隔符是'|'(竖条符)。 - fieldsep_zero 声明域分隔符来实现非对齐输出到零字节。 - footer 用来切换脚注。 - format 设置输出格式。允许使用唯一缩写(这意味着一个字母就够了)。 取值范围: unaligned:写一行的所有列在一条直线上中,当前活动字段分隔符分隔。 aligned:此格式是标准的,可读性好的文本输出。 wrapped:类似aligned,但是包装跨行的宽数据值,使其适应目标字段的宽度输出。 html:把表输出为可用于文档里的对应标记语言。输出不是完整的文档。 latex:把表输出为可用于文档里的对应标记语言。输出不是完整的文档。 troff-ms:把表输出为可用于文档里的对应标记语言。输出不是完整的文档。 null 打印一个字符串,用来代替一个null值。 缺省是什么都不打印,这样很容易和空字符串混淆。 numericlocale 切换分隔小数点左边的数值的区域相关的分组符号。 on:显示指定的分隔符。 off:不显示分隔符。 忽略此参数,显示默认的分隔符。 pager 控制查询和gsql帮助输出的分页器。如果设置了环境变量PAGER,输出将被指向到指定程序,否则使用系统缺省。 on:当输出到终端且不适合屏幕显示时,使用分页器。 off:不使用分页器。 always:当输出到终端无论是否符合屏幕显示时,都使用分页器。 recordsep 声明在非对齐输出格式时的记录分隔符。 - recordsep_zero 声明在非对齐输出到零字节时的记录分隔符。 - tableattr(或T) 声明放在html输出格式中HTML table标签的属性(例如:cellpadding或bgcolor)。注意:这里可能不需要声明border,因为已经在\pset border里用过了。如果没有给出value,则不设置表的属性。 - title 为随后打印的表设置标题。这个可以用于给输出一个描述性标签。如果没有给出value,不设置标题。 - tuples_only(或者t) 在完全显示和只显示实际的表数据之间切换。完全显示将输出像列头、标题、各种脚注等信息。在tuples_only模式下,只显示实际的表数据。 - feedback 切换是否输出结果行数。 - 表8 连接元命令 参数 参数说明 取值范围 \c[onnect] [DBNAME|- USER|- HOST|- PORT|-] 连接到一个新的数据库。当数据库名称长度超过63个字节时,默认前63个字节有效,连接到前63个字节对应的数据库,但是gsql的命令提示符中显示的数据库对象名仍为截断前的名称。 说明: 重新建立连接时,如果切换数据库登录用户,将可能会出现交互式输入,要求输入新用户的连接密码。该密码最长长度为999字节,受限于GUC参数password_max_length的最大值。 - \encoding [ENCODING] 设置客户端字符编码格式。 不带参数时,显示当前的编码格式。 \conninfo 输出当前连接的数据库的信息。 - 表9 操作系统元命令 参数 参数说明 取值范围 \cd [DIR] 切换当前的工作目录。 绝对路径或相对路径,且满足操作系统路径命名规则。 \setenv NAME [VALUE] 设置环境变量NAME为VALUE,如果没有给出VALUE值,则不设置环境变量。 - \timing [on|off] 以毫秒为单位显示每条SQL语句的执行时间(不包括屏显打印时间)。 on表示打开显示。 off表示关闭显示。 \! [COMMAND] 返回到一个单独的Unix shell或者执行Unix命令COMMAND。 - 表10 变量元命令 参数 参数说明 \prompt [TEXT] NAME 提示用户用文本格式来指定变量名称。 \set [NAME [VALUE]] 设置内部变量NAME为VALUE或者如果给出了多于一个值,设置为所有这些值的连接结果。如果没有给出第二个参数,只设变量不设值。 有一些常用变量被gsql特殊对待,它们是一些选项设置,通常所有特殊对待的变量都是由大写字母组成(可能还有数字和下划线)。 表11是一个所有特殊对待的变量列表。 \unset NAME 不设置(或删除)gsql变量名。 表11 \set常用命令 名称 命令说明 取值范围 \set VERBOSITY value 这个选项可以设置为值default,verbose,terse之一以控制错误报告的冗余行。 value取值范围:default,verbose,terse \set ON_ERROR_STOP value 如果设置了这个变量,脚本处理将马上停止。如果该脚本是从另外一个脚本调用的,那个脚本也会按同样的方式停止。如果最外层的脚本不是从一次交互的gsql会话中调用的而是用-f选项调用的,gsql将返回错误代码3,以示这个情况与致命错误条件的区别(错误代码为1)。 value取值范围为:on/off,true/false,yes/no,1/0 \set AUTOCOMMIT [on|off] 设置当前gsql连接的自动提交行为,on为打开自动提交,off为关闭自动提交。默认情况下,gsql连接处于自动提交模式,每个单独的语句都被隐式提交。如果基于性能或者其它方面考虑,需要关闭自动提交时,需要用户自己显示的发出COMMIT命令来保证事务的提交。例如,在指定的业务SQL执行完之后发送COMMIT语句显式提交,特别是gsql客户端退出之前务必保证所有的事务已经提交。 说明: gsql默认使用自动提交模式,若关闭自动提交,将会导致后面执行的语句都受到隐式事务包裹,数据库中不支持在事务中执行的语句不能在此模式下执行。 on表示打开自动提交。 off表示关闭自动提交。 表12 大对象元命令 参数 参数说明 \lo_list 显示一个目前存储在该数据库里的所有GaussDB大对象和提供给他们的注释。
  • 注意事项 一个gsql元命令的格式是反斜杠后面紧跟一个动词,然后是任意参数。参数命令动词和其他参数以任意个空白字符间隔。 要在参数里面包含空白,必须用单引号把它引起来。要在这样的参数里包含单引号,可以在前面加一个反斜杠。任何包含在单引号里的内容都会被进一步进行类似C语言的替换:\n(新行)、\t(制表符)、\b(退格)、\r(回车)、\f(换页)、\digits(八进制表示的字符)、\xdigits(十六进制表示的字符)。 用""包围的内容被当做一个命令行传入shell。该命令的输出(删除了结尾的新行)被当做参数值。 如果不带引号的参数以冒号(:)开头,它会被当做一个gsql变量,并且该变量的值最终会成为真正的参数值。 有些命令以一个SQL标识的名称(比如一个表)为参数。这些参数遵循SQL语法关于双引号的规则:不带双引号的标识强制转换成小写,而双引号保护字母不进行大小写转换,并且允许在标识符中使用空白。在双引号中,成对的双引号在结果名称中分析成一个双引号。比如,FOO"BAR"BAZ解析成fooBARbaz;而"Aweird""name"解析成A weird"name。 对参数的分析在遇到另一个不带引号的反斜杠时停止。这里会认为是一个新的元命令的开始。特殊的双反斜杠序列(\\)标识参数的结尾并将继续分析后面的SQL语句(如果存在)。这样SQL和gsql命令可以自由的在一行里面混合。但是在任何情况下,一条元命令的参数不能延续超过行尾。
  • 逻辑复制 GaussDB对数据复制能力的支持情况为: 支持通过数据迁移工具定期向异构数据库(如Oracle数据库等)进行数据同步,不具备实时数据复制能力,因此不足以支撑与异构数据库间并网运行实时数据同步的诉求。 基于上述情况,GaussDB提供了逻辑解码功能,通过反解xlog的方式生成逻辑日志。目标数据库解析逻辑日志以实时进行数据复制。具体如图1所示。逻辑复制降低了对目标数据库的形态限制,支持异构数据库、同构异形数据库对数据的同步,支持目标库进行数据同步期间的数据可读写,数据同步时延低。 图1 逻辑复制 逻辑复制由两部分组成:逻辑解码和数据复制。逻辑解码会输出以事务为单位组织的逻辑日志。业务或数据库中间件将会对逻辑日志进行解析并最终实现数据复制。GaussDB当前只提供逻辑解码功能,因此本章节只涉及逻辑解码的说明。 逻辑解码
  • 功能描述 数据库在执行DML的时候,存储引擎会生成对应的DML日志,用于进行恢复,对这些DML日志进行解码,即可还原对应的DML语句,生成逻辑日志。而对于DDL语句,数据库并不记录DDL原语句的日志,而是记录DDL语句涉及的系统表的DML日志。DDL种类多样、语法复杂,逻辑复制要支持DDL语句,通过这些系统表的DML日志来解码原DDL语句是非常困难的。新增DDL日志记录原DDL信息,并在解码时通过DDL日志可以得到DDL原语句。 在DDL语句执行过程中,SQL引擎解析器会对原语句进行语法、词法解析,并生成解析树(不同的DDL语法会生成不同类型的解析树,解析树中包含DDL语句的全部信息)。随后,执行器通过这些信息执行对应操作,生成、修改对应元信息。 本文通过新增DDL日志的方式,来支持逻辑解码DDL,其内容由解析器结果(解析树)以及执行器结果生成,并在执行器执行完成后生成该日志。 从语法树反解析出DDL,DDL反解析能够将DDL命令转换为JSON格式的语句,并提供必要的信息在目标位置重建DDL命令。与原始DDL命令字符串相比,使用DDL反解析的好处包括: 解析出来的每个数据库对象都带有Schema,因此如果使用不同的search_path,也不会有歧义。 结构化的JSON和格式化的输出能支持异构数据库。如果用户使用的是不同的数据库版本,并且存在某些DDL语法差异,需要在应用之前解决这些差异。 反解析输出的结果是规范化后的形式,结果与用户输入等价,不保证完全相同,例如: 示例1:在函数体中没有单引号'时,函数体的分隔符$$会被解析为单引号'。 原始SQL语句: CREATE FUNCTION func(a INT) RETURNS INT AS $$ BEGIN a:= a+1; CREATE TABLE test(col1 INT); INSERT INTO test VALUES(1); DROP TABLE test; RETURN a; END; $$ LANGUAGE plpgsql; 反解析结果: CREATE FUNCTION public.func ( IN a pg_catalog.int4 ) RETURNS pg_catalog.int4 LANGUAGE plpgsql VOLATILE CALLED ON NULL INPUT SECURITY INVOKER COST 100 AS ' BEGIN a:= a+1; CREATE TABLE test(col1 INT); INSERT INTO test VALUES(1); DROP TABLE test; RETURN a; END; '; 示例2:“CREATE MATERIALIZED VIEW v46_4 AS SELECT a, b FROM t46 ORDER BY a OFFSET 10 ROWS FETCH NEXT 3 ROWS ONLY”会被反解析为“CREATE MATERIALIZED VIEW public.v46_4 AS SELECT a, b FROM public.t46 ORDER BY a OFFSET 10 LIMIT 3”;。 示例3:“ALTER INDEX "Alter_Index_Index" REBUILD PARTITION "CA_ADDRESS_SK_index2"”会被反解析为“REINDEX INDEX public."Alter_Index_Index" PARTITION "CA_ADDRESS_SK_index2"”。 示例4:创建/修改范围分区表,START END语法格式均解码转化为LESS THAN语句: gaussdb=# CREATE TABLE test_create_table_partition2 (c1 INT, c2 INT) PARTITION BY RANGE (c2) ( PARTITION p1 START(1) END(1000) EVERY(200) , PARTITION p2 END(2000), PARTITION p3 START(2000) END(2500), PARTITION p4 START(2500), PARTITION p5 START(3000) END(5000) EVERY(1000) );
  • 解码格式 JSON形式 对于输入的DDL语句,SQL引擎解析器会通过语法、词法分析将其分解为解析树,解析树节点中包含了DDL的全部信息,并且执行器会根据解析树内容,执行系统元信息的修改。在执行器执行完成之后,便可以获取到DDL操作数据对象的search_path。本特性在执行器执行成功之后,对解析树信息以及执行器结果进行反解析,以还原出DDL原语句的全部信息。反解析的方式可以分解整个DDL语句,以方便输出JSON形式的DDL,用以适配异构数据库场景。 CREATE TABLE语句在经过词法、语法分析之后,得到对应的CreateStmt解析树节点,节点中包含了表信息、列信息、分布式信息(DistributeBy结构体)、分区信息(PartitionState结构)等。通过反解析后,可输出的JSON形式如下: {"JDDL":{"fmt":"CREATE %{persistence}s TABLE %{if_not_exists}s %{identity}D %{table_elements}s %{with_clause}s %{compression}s","identity":{"object_name":"test_create_table_a","schema_name":"public"},"compression":"NOCOMPRESS","persistence":"","with_clause":{"fmt":"WITH (%{with:, }s)","with":[{"fmt":"%{label}s = %{value}L","label":{"fmt":"%{label}I","label":"orientation"},"value":"row"},{"fmt":"%{label}s = %{value}L","label":{"fmt":"%{label}I","label":"compression"},"value":"no"}]},"if_not_exists":"","table_elements":{"fmt":"(%{elements:, }s)","elements":[{"fmt":"%{name}I %{column_type}T","name":"a","column_type":{"typmod":"","typarray":false,"type_name":"int4","schema_name":"pg_catalog"}}]}}} 可以看到,JSON形式中包含对象的search_path,其中的identity键标识schema为public,表名为test_create_table_a,其中%{persistence}s对应的字段如下,此SQL语句不含此字段所以为空。 [ [ GLOBAL | LOCAL ] [ TEMPORARY | TEMP ] | UN LOG GED ] %{if_not_exists}s对应SQL语句中的字段,不含此字段所以为空: [ IF NOT EXISTS ] %{identity}D对应SQL语句中的字段: table_name %{table_elements}s对应SQL语句中的字段: (column_name data_type) %{with_clause}s对应SQL语句中的字段: [ WITH ( {storage_parameter = value} [, ... ] ) ] %{compression}s对应SQL语句中的字段: [ COMPRESS | NOCOMPRESS ] SQL形式 输出的SQL形式(文本方式)为: {"TDDL":"CREATE TABLE public.test_create_table_a (a pg_catalog.int4) WITH (orientation = 'row', compression = 'no') NOCOMPRESS"} 其中语句中也包含Schema名称。
  • 接口设计 新增控制参数 新增逻辑解码控制参数,用于控制DDL的反解析流程以及输出形式。可通过pg_recvlogical -o或者pg_logical_slot_peek_changes开启。 enable-ddl-decoding:默认false,不开启DDL语句的逻辑解码;值为true时,开启DDL语句的逻辑解码。 enable-ddl-json-format:默认false,传送TEXT格式的DDL反解析结果;值为true时,传送JSON格式的DDL反解析结果。 新增GUC参数 enable_logical_replication_ddl:默认为ON,ON状态下,逻辑复制可支持DDL,否则,不支持DDL。只有当ON状态下,才会对DDL执行结果进行反解析,并生成DDL的WAL日志。否则,不反解析也不生成WAL日志。 enable_logical_replication_ddl的开关日志,以证明是否是用户修改了该参数导致逻辑解码不支持DDL。 新增日志 新增DDL日志xl_logical_ddl_message,其类型为RM_LOGICALDDLMSG_ID。其定义如下: 名称 类型 意义 db_id Oid 数据库ID rel_id Oid 表ID csn CommitSeqNo CS N快照 cid CommandId Command ID tag_type NodeTag DDL类型 message_size Size 日志内容长度 filter_message_size Size 日志中白名单过滤信息长度 message char * DDL内容
  • 逻辑复制 GaussDB对数据复制能力的支持情况为: 支持通过数据迁移工具定期向异构数据库(如Oracle数据库等)进行数据同步,不具备实时数据复制能力,因此不足以支撑与异构数据库间并网运行实时数据同步的诉求。 GaussDB提供了逻辑解码功能,通过反解xLog的方式生成逻辑日志。目标数据库解析逻辑日志以实时进行数据复制。具体如图 逻辑复制所示。逻辑复制降低了对目标数据库的形态限制,支持异构数据库、同构异形数据库对数据的同步,支持目标库进行数据同步期间的数据可读写,数据同步时延低。 图1 逻辑复制 逻辑复制由两部分组成:逻辑解码和数据复制。逻辑解码会输出以事务为单位组织的逻辑日志。业务或数据库中间件将会对逻辑日志进行解析并最终实现数据复制。GaussDB当前只提供逻辑解码功能。 逻辑解码
  • 操作步骤 进入“续费管理”页面,设置查询条件筛选待续费资源。 单击列表右上角“一键导出(**)条”,导出待续费资源清单。 一键导出:导出符合当前筛选条件的所有待续费资源,单次操作允许最大导出数为10000条。具体操作请参见一键导出。 批量导出:导出当前已勾选的待续费资源,单次操作允许最大导出数为200条。具体操作请参见批量导出。 页面自动跳转至“导出记录”,单击操作栏“下载”,下载导出文件。 将导出文件中的资源id批量输入搜索框,单击回车键进行搜索。 华为云支持批量查询资源id,当前单次最多可输入200个资源id进行批量查询,支持以空格或逗号分隔。 勾选搜索出的待续费资源,单击列表左上角的“批量续费”。 当前待续费资源列表分页默认为50,同时支持客户自定义设置为10/20/100/200。 单次批量续费操作允许选择最大资源数为100,可通过提示查看当前已选择待批量续费资源个数。 确认待续费资源的相关信息,并设置续费时长,单击“去支付”。 选择优惠和支付方式,单击“确认付款”。 单次批量续费操作生成一条组合交易订单,可以选择一个折扣。 一次支付只能使用一张代金券。 支付成功后即可完成本次续费操作。单击“查看订单详情”可查看已续费资源详情。单击“返回续费管理”可返回续费管理页面,再次进行续费操作。 客户可参考以上步骤,通过获取待续费资源清单,批量查询资源id,分批完成资源续费。
  • 操作步骤 进入“续费管理”页面。 勾选待续费资源,单击列表上方的“批量导出”。 一键导出:导出符合当前筛选条件的所有待续费资源,单次操作允许最大导出数为10000条。具体操作请参见一键导出。 批量导出:导出当前已勾选的待续费资源,单次操作允许最大导出数为200条。具体操作请参见批量导出。 根据需求可以调整续费时长,提前对待续费资源询价,单击“导出”。 页面自动跳转至“导出记录”,单击操作栏“下载”,下载导出文件,用于向公司财务申请资金。 通过实名认证的企业客户和个人客户,可在“合同管理”页面申请请款合同,具体操作参见申请请款合同。 资金到账后,可对指定资源分批操作续费。 将导出文件中的资源id批量输入搜索框,单击回车键进行搜索。 华为云支持批量查询资源id,当前单次最多可输入200个资源id进行批量查询,支持以空格或逗号分隔。 勾选搜索出的待续费资源,单击列表左上角的“批量续费”。 当前待续费资源列表分页默认为50,同时支持客户自定义设置为10/20/100/200。 单次批量续费操作允许选择最大资源数为100,可通过提示查看当前已选择待批量续费资源个数。 确认待续费资源的相关信息,并设置续费时长,单击“去支付”。 选择优惠和支付方式,单击“确认付款”。 单次批量续费操作生成一条组合交易订单,可以选择一个折扣。 一次支付只能使用一张代金券。 支付成功后即可完成本次续费操作。单击“查看订单详情”可查看已续费资源详情。单击“返回续费管理”可返回续费管理页面,再次进行续费操作。 客户可参考以上步骤,提前对待续费资源询价,向公司财务申请资金。资金到账后,分批完成资源续费。
  • 退款资金流向 云服务退订、降配、即时转按需退款或硬件产品退货后,客户可在订单详情页查看退款处理进展和退款金额。若订单已完成,可在“账单管理>流水账单”查到详细流水,具体操作请参见查看流水与明细账单。 通过华为云账户余额支付或第三方在线支付(如支付宝、微信、网银等)的订单,退款款项会返还至华为云账户;若订单通过合作伙伴代付,退款款项会返还至关联的合作伙伴华为云账户。 若产品退订成功或资源降配、即时转按需订单已完成,退款款项大约会在1个工作日内返还至华为云账户(退款仅指客户以现金或储值卡方式支付的订单金额,客户通过代金券、优惠券抵扣的部分是否退回请参见用券买的产品,退订时券怎么处理? 退款款项返还至华为云账户后,可以进行提现。操作步骤请参见余额提现,提现到账时间请参见提现要多久? 对于待审核的订单,需要等待订单审核通过,订单状态为“已完成”时,退款款项才会返还至华为云账户。若需紧急审批,请联系客服或客户经理。 父主题: 退订与退换货
  • 云服务退订规则概览 云服务退订主要分为四个场景:退订使用中的资源、退订未生效的资源、退订续费周期、退订创建/变更失败的资源。不同退订场景下是否收取手续费以及券是否可退见表1。 其中退订使用中的资源、退订未生效的资源、退订续费周期时均有可能涉及到大额退订(退订金额超过5万元),其注意事项请参见大额退订。 表1 退订规则介绍 退订场景 已消费金额 手续费 代金券 现金券/储值卡 折扣券 退订使用中的资源 非五天无理由退订 收取 收取 不退还 部分可退 (需扣除已消费金额和退订手续费) 不退还 可五天无理由退订 不收取 不收取 退还 退还 不退还 退订未生效的资源 不收取 不收取 退还 退还 不退还 退订续费周期 不收取 不收取 退还 退还 不退还 退订创建/变更失败的资源 不收取 不收取 退还 退还 不退还 “退订”仅针对包年/包月资源,当客户想终止服务时,可基于退订规则发起退订资源操作并退还相应款项;按需资源,客户可直接在云服务控制台删除资源,不涉及退款申请操作。 订单使用代金券、现金券、储值卡金额抵扣支付,发生退订时,若代金券、现金券、储值卡已过期失效,则退回的金额失效。 部分云服务不支持退订,如 域名 、云会议、welink等,具体请参见不支持退订云服务产品清单。 更详细规则及退订操作请根据具体退订场景去对应文档中查看。 退订成功后退订金额会返还到您的华为云现金账户,具体请参见退款资金流向。 父主题: 云服务退订
  • 为什么可开票金额与消费金额不一致? 可开票金额与消费金额不一致的可能原因如下: 客户存在按需消费,按需消费不能实时开票,需要在次月3日出账后生成开票金额,建议次月4日15点后索取发票。 客户存在欠票。 客户的消费金额中存在代金券支付的部分,代金券的消费不纳入可开票金额。 客户有云商店的消费,云商店可开票金额不纳入华为云可开票金额范围内。 客户想要根据充值金额进行开票,根据《中华人民共和国发票管理办法》、《中华人民共和国发票管理办法实施细则》,华为云只能对已消费金额开具增值税发票。如果您当前没有使用 华为云产品 的需求,也可以购买储值卡再索取发票,如何购买储值卡。 父主题: 申请发票类
  • 企业客户需要使用关联公司的抬头开票应该如何操作? 根据《增值税专用发票使用规定》,发票开具要与实际交易相符,您需要先修改企业实名认证信息,若无法变更实名认证,请参考如下操作: 需要您确认下实名认证的公司(下称“我公司”)的与目标抬头公司(下称“关联公司”)是否存在关联关系: 我公司是关联公司的母公司; 我公司是关联公司的子公司; 我公司与关联公司受同一母公司控制。 在以上定义中,“母公司”、“子公司”或“控制”是指直接或间接持有或被持有股份或认缴资本达到50%以上,或所占比例虽未到50%但大于30%,并根据协议安排或对董事及高级管理人员的任命而对该企业的经营管理拥有实际控制权。 如果关联公司与您当前实名认证的公司存在上述的关联关系,您可以联系您的客户经理签署相关证明材料如:关联公司共用账号补充协议、关联申明等,签署后您可以使用关联公司抬头进行开票。 如果关联公司与您当前实名认证的公司不符合上述的关联关系,根据华为云发票规定,将不允许开具新的抬头! 父主题: 发票信息类
  • 这个月退款、调账的负向信用额度是否会在下个账期自动核销历史账单? 当月退款、调账的负向信用额度金额出账时优先抵扣当月的正向信用额度消费, 当月信用额度支付总金额为负数时表示本期存在溢出金额,溢出金额会用于偿还账号下历史未结清的账单及本期以后账单,比如202101月消费信用额度支付金额为50.00元,退款信用额度支付金额为-40.00元,调账信用额度支付金额为-20.00元,202101月信用额度支付总金额为 50.00-40.00-20.00=-10.00 为负数,202101账期存在溢出金额-10.00元,-10.00元将用于偿还账号下历史未结清的账单及本期以后账单。 父主题: 账单
  • 退订后资源会自动保存在回收站吗? 当前部分云服务具备回收站功能,支持回收站功能的云服务清单如下,回收机制详情请以具体云服务说明为准。 不具备回收站功能、未开启回收站功能、未放入回收站的资源退订后无法恢复,请谨慎操作退订。 序号 云服务列表 回收站说明 1 弹性云服务器 ECS ECS回收站概述 2 云硬盘 EVS EVS回收站概述 3 云数据库 RDS RDS for MySQL回收站 RDS for MariaDB回收站 RDS for PostgreSQL回收站 RDS for SQL Server回收站 4 云数据库 GaussDB GaussDB回收站 父主题: 退订与退换货
  • URI GET /v5/iot/{project_id}/routing-rule/actions 表1 路径参数 参数 是否必选 参数类型 描述 project_id 是 String 参数说明:项目ID。获取方法请参见 获取项目ID 。 表2 Query参数 参数 是否必选 参数类型 描述 rule_id 否 String 参数说明:规则触发条件ID。 取值范围:长度不超过36,只允许字母、数字、下划线(_)、连接符(-)的组合。 channel 否 String 参数说明:规则动作的类型。 取值范围: HTTP_FORWARDING:HTTP服务消息类型。 DIS_FORWARDING:转发DIS服务消息类型。 OBS_FORWARDING:转发OBS服务消息类型。 AMQP_FORWARDING:转发AMQP服务消息类型。 DMS_KAFKA_FORWARDING:转发kafka消息类型。 ROMA_FORWARDING:转发Roma消息类型。(仅企业版支持) INFLUXDB_FORWARDING:转发InfluxDB消息类型。(仅标准版和企业版支持) MYSQL_FORWARDING:转发MySQL消息类型。(仅标准版和企业版支持) FUNCTIONGRAPH_FORWARDING:转发FunctionGraph消息类型。(仅标准版和企业版支持) MRS _KAFKA_FORWARDING:转发MRS_KAFKA消息类型。(仅企业版支持) DMS_ROCKETMQ_FORWARDING:转发RocketMQ消息类型。(仅标准版和企业版支持) app_type 否 String 参数说明:租户规则的生效范围。 取值范围: GLOBAL:生效范围为租户级。 APP:生效范围为资源空间级。如果类型为APP,可携带app_id查询指定资源空间下的规则动作列表,不携带app_id则查询默认资源空间下的规则动作列表。 app_id 否 String 参数说明:资源空间ID。此参数为非必选参数,rule_id不携带且app_type为APP时,该参数生效,可携带app_id查询指定资源空间下的规则动作列表,不携带app_id则查询默认资源空间下的规则动作列表。 取值范围:长度不超过36,只允许字母、数字、下划线(_)、连接符(-)的组合。 limit 否 Integer 参数说明:分页查询时每页显示的记录数。默认每页10条记录,最大设定每页50条记录。 取值范围:1-50的整数,默认值为10。 最小值:1 最大值:50 缺省值:10 marker 否 String 参数说明:上一次分页查询结果中最后一条记录的ID,在上一次分页查询时由 物联网平台 返回获得。分页查询时物联网平台是按marker也就是记录ID降序查询的,越新的数据记录ID也会越大。若填写marker,则本次只查询记录ID小于marker的数据记录。若不填写,则从记录ID最大也就是最新的一条数据开始查询。如果需要依次查询所有数据,则每次查询时必须填写上一次查询响应中的marker值。 取值范围:长度为24的十六进制字符串,默认值为ffffffffffffffffffffffff。 缺省值:ffffffffffffffffffffffff offset 否 Integer 参数说明:表示从marker后偏移offset条记录开始查询。默认为0,取值范围为0-500的整数。当offset为0时,表示从marker后第一条记录开始输出。 - 限制offset最大值是出于API性能考虑,您可以搭配marker使用该参数实现翻页,例如每页50条记录,1-11页内都可以直接使用offset跳转到指定页,但到11页后,由于offset限制为500,您需要使用第11页返回的marker作为下次查询的marker,以实现翻页到12-22页。 取值范围:0-500的整数,默认为0。 最小值:0 最大值:500 缺省值:0
  • 响应示例 状态码: 200 Successful response { "actions" : [ { "rule_id" : "1a7ffc5c-d89c-44dd-8265-b1653d951ce1", "action_id" : "1a7ffc5c-d89c-44dd-8265-b1653d951ce0", "channel_detail" : { "amqp_forwarding" : { "queue_name" : "test" }, "obs_forwarding" : { "file_path" : "device_property_report/{YYYY}/{MM}/{DD}/{HH}", "project_id" : "project_id", "bucket_name" : "bucket_name", "region_name" : "region_name", "location" : "location" }, "http_forwarding" : { "sni_enable" : false, "cn_name" : "domain:8443", "cert_id" : "0ae892cfeff641158920300b2292d2ca", "url" : "http://host:port/callbackurltest" }, "dis_forwarding" : { "stream_name" : "stream_name", "project_id" : "project_id", "stream_id" : "stream_id", "region_name" : "region_name" }, "dms_kafka_forwarding" : { "addresses" : [ { "port" : 443, "ip" : "host", "domain" : "huawei.com" } ], "password" : "password", "project_id" : "project_id", "topic" : "topic", "region_name" : "region_name", "mechanism" : "PLAIN", "security_protocol" : "SASL_SSL", "username" : "username" } }, "channel" : "HTTP_FORWARDING", "app_id" : "1a7ffc5c-d89c-44dd-8265-b1653d951ce2" } ], "count" : 10, "marker" : "5c90fa7d3c4e4405e8525079" }
  • 请求参数 表3 请求Header参数 参数 是否必选 参数类型 描述 X-Auth-Token 否 String 参数说明:用户Token。通过调用 IAM 服务 获取IAM用户Token接口获取,接口返回的响应消息头中“X-Subject-Token”就是需要获取的用户Token。简要的获取方法样例请参见 Token认证。 Instance-Id 否 String 参数说明:实例ID。物理多租下各实例的唯一标识,一般华为云租户无需携带该参数,仅在物理多租场景下从管理面访问API时需要携带该参数。您可以在IoTDA管理控制台界面,选择左侧导航栏“总览”页签查看当前实例的ID。
  • 错误码 当您调用API时,如果遇到“APIGW”开头的错误码,请参见API网关错误码进行处理。 更多服务错误码请参见API错误中心。 状态码 错误码 错误信息 描述 处理措施 200 IOTDA.014111 Command request timed out. Check whether the device returns a response within the specified time after receiving the request. 同步命令等待设备回复命令响应超时。 该接口为同步接口,需要设备在收到命令后回复命令响应请检查设备收到请求后是否在指定时间内返回响应给平台。 400 IOTDA.000006 Invalid input data. 请求参数不合法。 请排查请求参数是否符合华为云对应接口文档要求。 400 IOTDA.000008 Invalid input. The request format is invalid. For details, see the error message. 请求的格式不正确,如json非法,mediaType不正确等。 请排查该请求的请求格式是否正确。 400 IOTDA.000009 Invalid input. Invalid time format. 时间的格式不正确。 请排查请求参数中时间的格式是否与对应接口文档中的保持一致。 400 IOTDA.000010 Invalid input. The start time must be earlier than the end time. 请求中的开始时间大于结束时间。 请求中开始时间必须早于结束时间。 400 IOTDA.000011 Invalid input. The specified parameter 'pageNo' is out of range. 请求参数中pageNo超出范围。 请排查请求参数中的pageNo大小是否在对应接口文档限制范围之内。 400 IOTDA.000012 Invalid input. The specified parameter 'pageSize' is out of range. 请求参数中pageSize超出范围。 请排查请求参数中的pageSize大小是否在对应接口文档限制范围之内。 400 IOTDA.000013 Invalid input. The value of 'pageSize' multiplying 'pageNo' exceeds the upper limit. 查询范围超过最大限制。 请检查pageSize和pageNo参数的大小。 400 IOTDA.000014 Invalid input. The specified parameter 'nextToken' is out of range. 请求中nextToken参数超过范围。 请排查请求中的nextToken参数是否在对应接口文档的限制范围之内。 400 IOTDA.000017 Invalid input. The specified parameter 'limit' is out of range. 请求中limit参数超过范围。 请排查请中求的limit参数是否在对应接口文档的限制范围之内。 400 IOTDA.000018 Invalid input. The specified parameter 'marker' is out of range. 请求中marker参数超过范围。 请排查请求中的marker参数是否在对应接口文档的限制范围之内。 400 IOTDA.000030 Failed to register the resource in Stage. Please try again later. 注册资源失败。 请稍后重试或联系华为工程师分析解决。 400 IOTDA.000031 Failed to deregister the resource in Stage. Please try again later. 注销资源失败。 请稍后重试或联系华为工程师分析解决。 400 IOTDA.000032 Failed to update the resource in Stage. Please try again later. 修改资源失败。 请稍后重试或联系华为工程师分析解决。 400 IOTDA.001001 Invalid input for this application. 资源空间参数不合法。 请参考华为云文档创建资源空间的请求参数章节。 400 IOTDA.001004 AppId is not in request header. 该用户有多个资源空间的情况下未携带appId访问接口。 请携带对应的appId。 400 IOTDA.001011 Invalid input. The specified parameter 'app_id' is not carried. 未携带参数app_id。 请在请求参数中携带app_id。 400 IOTDA.001012 Invalid input. The appId already exists. 资源空间ID已存在。 请更换资源空间ID。 400 IOTDA.001013 Invalid input. The source and target instance IDs cannot be the same. 源实例ID与目的实例ID不能相同。 请检查实例ID是否正确。 400 IOTDA.004002 Invalid input. The tag_key %s cannot start with 'iot_'. 标签的tag_key不能以iot_开头。 请修改tag_key后进行操作。 400 IOTDA.004003 Invalid input. The tag_key %s does not exist. 不存在此tag_key的标签。 请确认传递的tag_key参数是否正确或是否存在该标签。 400 IOTDA.004004 Invalid input. This tag key %s already exists. 标签的tag_key重复。 请修改tag_key的值后再操作。 400 IOTDA.005002 Upgrade Failed. Invalid device version. 升级失败,设备版本号不合法。 请确认设备上报版本号是否为空。 400 IOTDA.005003 Upgrade failed. Verify device version failed. 升级失败, 版本号校验失败。 请将设备上报的版本号与软固件包的版本号保持一致。 400 IOTDA.005004 Upgrade failed. The current version cannot be upgraded to the target version. 升级失败,当前版本不能升级到目标版本。 请确认设备上报的版本号与软固件包支持的源版本号是否一致。 400 IOTDA.005005 Upgrade failed. Invalid update status. 升级失败, 更新状态非法。 请确认上报的更新状态是否正确。 400 IOTDA.005006 Upgrade Failed. ErrorCode: %s, description : %s. 升级失败。 请确认上报码流是否正确,ErrorCode可参考文档设备上报升级状态 。 400 IOTDA.005007 Upgrade failed. The format of the device data is invalid. 升级失败, 设备上报的数据格式不合法。 请查阅软固件升级 页面并对设备上报数据格式进行排查。 400 IOTDA.005008 Upgrade failed. Reported progress %d%% is invalid. 升级失败, 上报升级进度不在0-100之内。 请将上报升级进度约束在0-100之内。 400 IOTDA.005009 Upgrade failed. Invalid result_code. 升级失败, result_code不合法。 请查阅设备上报升级状态 页面“paras参数列表”部分并对参数result_code进行检查。 400 IOTDA.005010 Upgrade failed. Waiting for %s timed out. 升级失败,等待超时。 请设备及时回响应,由于设备没有及时回响应,导致任务超时失败。 400 IOTDA.005011 Upgrade failed. Send %s command failed. 升级失败,发送命令失败。 请联系华为工程师分析解决。 400 IOTDA.009002 The resource model does not exist. 资源模型不存在。 请确认请求参数中是否携带resource和event,或者notifyType。 400 IOTDA.009004 The subscription subject does not belong to the current application. 该订阅记录不属于当前应用。 请确认订阅记录和应用间的关系是否正确。 400 IOTDA.009005 Invalid request callback URL. 请求中的callbackurl地址不合法。 请求中的callbackurl参数格式可参考文档订阅推送相关问题 。 400 IOTDA.009006 The subscription subject already exists. 该订阅记录已经存在。 该订阅已存在,无需再重复订阅。 400 IOTDA.009007 The request channel is invalid. 请求中channel参数不合法。 请排查请求中的channel参数是否符合对应规则动作/订阅接口文档channel取值要求。 400 IOTDA.009009 The filter is invalid. filter不合法。 请联系华为工程师分析解决。 400 IOTDA.009010 The resource and event do not match. resource和event不匹配。 请排查请求中resource与event参数是否符合对应规则动作/订阅接口文档中的对应关系要求。 400 IOTDA.010000 Invalid input for this rule. 规则参数不合法。 请排查请求参数是否符合华为云文档要求。 400 IOTDA.010001 The rule name already exists. 规则名称已存在。 请换一个规则名称再重试。 400 IOTDA.010004 Invalid parameter in the rule condition. 规则条件不合法。 请求中SQL语句相关参数可参考文档SQL语句。 400 IOTDA.010005 Invalid parameter in the rule action. 规则动作参数不合法。 请排查请求中action参数是否符合华为云文档要求。 400 IOTDA.010006 Duplicate rule condition ID. 规则条件ID重复。 请重新命名规则条件ID后重试。 400 IOTDA.010007 Duplicate rule action ID. 规则动作ID重复。 请重新命名规则动作ID后重试。 400 IOTDA.010008 The device in the rule condition does not exist. 规则条件中对应的设备不存在。 请检查请求参数是否正确或设备在平台是否已经存在。 400 IOTDA.010009 The device in the rule action does not exist. 规则动作中对应的设备不存在。 请检查请求参数是否正确或设备在平台是否已经存在。 400 IOTDA.010010 The device information in the rule condition does not exist. 规则条件中对应的设备信息不存在。 请检查请求参数是否正确或设备在平台是否已经存在。 400 IOTDA.010011 The device information in the rule action does not exist. 规则动作中对应的设备信息不存在。 请检查请求参数是否正确或设备在平台是否已经存在。 400 IOTDA.010012 The tag in the rule condition does not exist. 规则条件中对应的标签不存在。 请检查请求参数是否正确或标签在平台是否已经存在。 400 IOTDA.010013 Invalid rule parameter. 规则参数不合法。 请对请求参数进行校验。 400 IOTDA.010014 Invalid input. The rule action of the DEVICE_ALARM type can be created only in the condition of the DEVICE_DATA type. DEVICE_ALARM类型的规则动作只允许创建在DEVICE_DATA类型的条件中。 请在创建的DEVICE_ALARM类型的规则动作时,将条件类型设置为DEVICE_DATA规则条件。 400 IOTDA.010015 Max rules (10) reached. 用户下规则数量超过上限。 请删除多余的规则后再注册。 400 IOTDA.010016 Invalid input. Only one DEVICE_ALARM rule can be created. DEVICE_ALARM类型规则只允许创建一个。 DEVICE_ALARM类型规则已存在,无需重复注册。 400 IOTDA.010017 Invalid input. The rule condition of the DEVICE_DATA type cannot contain both product_id and device_id. 在DEVICE_DATA类型的规则条件中不能同时存在product_id与device_id。 请确认DEVICE_DATA类型的规则条件中只存在device_id或product_id。 400 IOTDA.010018 Invalid input. Both device_id and product_id in the rule condition of the DEVICE_DATA type are empty. 在DEVICE_DATA类型的规则条件中product_id与device_id同时为空。 请确认DEVICE_DATA类型的规则条件中device_id或product_id仅有一个为空。 400 IOTDA.010019 The rule with the same condition already exists. 该规则条件的规则已经存在。 规则已存在, 无需重复注册。 400 IOTDA.010021 Invalid app_id. app_id不合法。 请确认请求中的app_id是否正确。 400 IOTDA.010022 The rule has no action and cannot be enabled. 该规则没有规则动作, 无法激活。 请通过修改规则的接口为该规则添加规则动作。 400 IOTDA.010023 Duplicate channeldetail in the rule action. 规则动作中的channeldetail重复。 规则已存在,无需重复注册或者删除无用规则后重试。 400 IOTDA.010024 Invalid input. Invalid address. 地址非法。 请排查请求参数是否符合华为云文档要求。 400 IOTDA.010025 Invalid input. Invalid username or password. 用户名或密码不合法。 请排查请求参数username与password是否符合华为云文档要求。 400 IOTDA.010026 Invalid input. The streamId or streamName is empty. 通道ID或通道名不存在。 请排查请求参数streamId与streamName是否符合华为云文档要求。 400 IOTDA.010027 Invalid input. Failed to query the channel. 查询通道失败。 请排查请求参数是否与实际云服务产品参数一致。 400 IOTDA.010028 Invalid input. Invalid log_group_id or log_stream_id. 日志组ID或日志流ID不合法。 请排查请求参数log_group_id与log_stream_id是否符合华为云文档要求。 400 IOTDA.010029 Invalid input. Invalid func_urn. 函数的URN不合法。 请排查请求参数func_urn是否符合华为云文档要求。 400 IOTDA.010030 Invalid input. Connect to the database failed. 流转数据库连接失败。 请排查请求数据库连接参数是否符合华为云文档要求。 400 IOTDA.010031 Invalid input. The table name does not exist. 流转数据库表格不存在。 请排查请求table_name是否符合华为云文档要求。 400 IOTDA.010032 Invalid input. The suffix of the krb_file file is .conf, and the suffix of the keytab_file file is .keytab in the request. 请求krb_file文件后缀名是.conf 并且 请求keytab_file文件后缀名是.keytab。 请排查请求krb_file与keytab_file是否符合华为云文档要求。 400 IOTDA.010033 Invalid input. The credential file does not exist. Kerberos服务凭证不存在。 请排查配置凭证文件是否符合华为云文档要求。 400 IOTDA.010034 Invalid input. Connect to the cloud service failed. 连接云服务失败。 请排查请求参数是否符合华为云文档要求。 400 IOTDA.010035 Invalid input. Max time range (24 hours) exceeded. 超出时间查询范围,最大范围是24小时。 请修改参数后重试。 400 IOTDA.010036 Invalid input. The query time dimension is invalid. 查询时间维度无效。 请修改参数后重试。 400 IOTDA.010038 Invalid input. Connect to database failed due to invalid database info. 动作中的数据库信息不合法。 请排查流转数据库信息是否符合华为云文档要求。 400 IOTDA.010039 Invalid input. Repeated column in the action database. 动作中存在多个转发字段流转到目标数据库的同一个字段。 请排查转存配置中的转发字段是否符合华为云文档要求。 400 IOTDA.010040 Invalid input. Column in the action does not match that in the database. 动作中目标存储字段和流转数据库中的字段不匹配。 请排查流转数据库是否存在转存配置中的目标存储字段。 400 IOTDA.010042 The number of rules in a project has reached the upper limit. 规则数量已经达到上限。 请删除多余的规则后重试。 400 IOTDA.010044 Invalid input. The stack policy already exists. 已存在相同积压策略配置。 积压策略配置已存在,无需重复创建或者删除对应配置后重试。 400 IOTDA.010045 Invalid input. The %s parameter is invalid. 积压策略配置参数不合法。 请排查对应积压策略配置参数是否符合华为云控制台输入要求。 400 IOTDA.010047 Invalid input. The flow control policy is duplicated. 已存在相同流控策略配置。 流控策略配置已存在,无需重复创建或者删除对应配置后重试。 400 IOTDA.010048 Invalid input. The %s parameter is invalid. 流控策略配置参数不合法。 请排查对应流控策略配置参数是否符合华为云控制台输入要求。 400 IOTDA.010050 Invalid input. Invalid address or the topic does not exist. 地址非法或者主题不存在。 请排查请求参数是否符合华为云文档要求。 400 IOTDA.013000 The product does not exist or does not belong to the application. 产品不存在或产品不在指定资源空间下。 请排查请求参数是否正确或产品是否已经在指定资源空间下注册(不指定资源空间时,会在默认资源空间下查找产品)。 400 IOTDA.013001 The serviceType of the product does not exist. 产品服务类型不存在。 请排查该产品是否有服务类型,若没有,可调用修改产品接口添加服务类型。 400 IOTDA.013002 The properties of deviceServiceCapability do not exist. 产品的属性不存在。 请排查该产品是否有属性信息,若没有,可调用修改产品接口添加属性。 400 IOTDA.013003 Operation not allowed. The product is unavailable. 未知的产品类型。 请排查设备是否关联产品, 若没有,可调用修改设备信息接口添加产品ID。 400 IOTDA.013005 The productName has been used in the same application. 该资源空间下产品名已被使用。 请更换产品名重新操作。 400 IOTDA.013008 The product ID has been used in the same application. 该资源空间下productId已被使用。 请更换productId后重试。 400 IOTDA.013010 Invalid input. The content in the product service capability is duplicate. Check the content %s. 产品模型内容有重复的命名信息。 产品模型内容定义重复,请检查。 400 IOTDA.013012 Invalid input. The size of product profile content has reached or exceeded limit. 产品模型内容大小超过了限制。 请将定义的产品模型内容限制在指定范围内。 400 IOTDA.013015 Invalid input. The number of content items %s in the product has reached the limit %s. 无效的输入,产品中的字段超过了限制。 检查产品中的字段数。 400 IOTDA.013501 Invalid input. Invalid topic_short_name. If the value of operation_type is not SUBSCRIBE, the value of topic_short_name cannot contain the number sign (#) or plus sign (+). topic_short_name参数不合法。 请排查请求参数是否符合华为云文档要求。 400 IOTDA.013502 Invalid input. The topic_short_name is duplicated under the same product. 相同产品下topic_short_name参数重复。 请重新填写topic_short_name后重试。 400 IOTDA.014001 Invalid input. The externalId parameter already exists. externalId参数已经存在。 请更换externalId参数后重试。 400 IOTDA.014002 Invalid input. The type of externalId must be String. externalId参数的类型必须是String类型。 请将externalId参数的类型改成String类型。 400 IOTDA.014008 Invalid input. Duplicated nodeId. nodeId已被使用。 请更换nodeId后再重试。 400 IOTDA.014009 Invalid input. Duplicated deviceName. 该资源空间下deviceName已被使用。 请更换deviceName后再重试。 400 IOTDA.014010 Invalid input. The secretDevice cannot be empty when authType is SECRET. 当authType是SECRET时, secretDevice不能为空。 请修改参数后重试。 400 IOTDA.014011 Invalid input. The secretEncryptionType cannot be empty when authType is MQTT. 当authType为MQTT时,secretEncryptionType不能为空。 请修改参数后重试。 400 IOTDA.014012 Invalid input. The pskDevice cannot be empty when authType is PSK. authType为PSK时,pskDevice不能为空。 请修改参数后重试。 400 IOTDA.014013 Invalid input. The SecureAccess (isSecure) must be true. isSecure参数值必须为true。 请将isSecure参数设置成true。 400 IOTDA.014017 Invalid input. The serviceType does not exist. serviceType参数不存在。 请检查serviceType参数与所属产品的serviceType是否相同。 400 IOTDA.014023 Gateway and sensor authentication types are inconsistent. 网关和子设备的认证类型不一致。 请保证网关和子设备的认证类型一致。 400 IOTDA.014025 Invalid input. Invalid serviceId. serviceId不合法。 请排查请求参数serviceId是否符合华为云文档要求。 400 IOTDA.014027 Invalid input. The initialization cannot be empty when mode is INITIALIZATION. mode为INITIALIZATION时initialization参数不能为空。 请联系华为工程师分析解决。 400 IOTDA.014028 Invalid input. The gateway is not online. 网关不在线。 请将网关设备接入后再重试。 400 IOTDA.014031 Invalid input. The device already exists. 设备已存在。 设备ID已存在,请更换参数后再重试,如deviceId。 400 IOTDA.014033 Invalid input. When the product protocol is CoAP, the password must be in hexadecimal format. 产品协议为CoAP时,密码必须为十六进制字符。 请将密码格式改为十六进制的字符。 400 IOTDA.014034 Invalid input. The serviceId or eventType does not match. serviceId或eventType不匹配。 请检查请求参数serviceId与eventType是否与profile中定义的相同。 400 IOTDA.014035 Invalid input. The size of extension_info has reached or exceeded 1 KB. extension_info字段大小超过1K。 请将extension_info参数的大小限制在1K以内。 400 IOTDA.014043 Invalid input. The gateway does not exist. 网关不存在。 请检查请求参数中的gateway_id是否已经在平台注册。 400 IOTDA.014051 Invalid input. The device does not exist or does not belong to the application. 设备不存在或者设备不在指定的资源空间下。 请排查请求参数是否有误并确认是否有在资源空间注册该设备。 400 IOTDA.014100 Invalid command status. 无效的命令状态。 请联系华为工程师解决。 400 IOTDA.014104 The device command cannot be canceled because it has been canceled, executed, or expired. 设备命令已被取消,到期或执行, 无法取消。 请联系华为工程师解决。 400 IOTDA.014105 Invalid parameter 'mode'. mode参数不合法。 请重新确认mode参数填写是否正确,mode值仅可以为null、PASSIVE或者ACTIVE。 400 IOTDA.014107 Invalid input. Invalid parameter 'lifeCycle'. lifeCycle参数不合法。 请联系华为工程师解决。 400 IOTDA.014108 Invalid parameter 'command_name'. command_name参数不合法。 请检查service_id,command_name参数是否与profile中的相一致。 400 IOTDA.014110 Invalid input. The format of parameter 'commandBody' is not JSON. commandBody参数格式不是json格式。 请确认请求中对应的参数paras是json格式。 400 IOTDA.014112 Send to device failed because the device does not subscribe to the topic. 发送到设备失败,设备没有订阅该主题。 请确认设备是否订阅正确的topic。 400 IOTDA.014113 Invalid input. The size of paras has exceeded the upper limit. paras参数大小超过最大值。 请减小请求中paras参数长度。 400 IOTDA.014114 The API does not support MQTT devices. 此接口不支持MQTT协议类型的设备。 请更换为NB设备或使用支持MQTT协议的接口。 400 IOTDA.014115 The API does not support NB-IoT devices. 此接口暂不支持NB-IoT设备。 对于NB-IoT设备,请使用下发异步设备命令接口。 400 IOTDA.014116 Invalid input. The size of request body has exceeded the upper limit. 下发的请求体大小超过最大值。 请减小下发的请求体大小。 400 IOTDA.014130 Invalid input. The messageId of the device is not unique. 请求下发给设备的message_id不唯一,与之前创建的message_id重复。 message_id需要确保唯一,请修改message_id参数。 400 IOTDA.014150 Invalid input. The topic has no permission. 非法的输入,该topic没有订阅的权限。 请检查topic参数,确保topic输入正确且该topic在产品中具备订阅权限或者全部权限。 400 IOTDA.014151 Invalid input. The topic-related parameters in the request are duplicate. 非法的输入, topic相关的参数重复。 请确保请求体中topic字段与topic_full_name字段只有一个被输入。 400 IOTDA.014201 Invalid input. The batch task name already exists. 该任务名已存在。 请更换任务名后重试。 400 IOTDA.014203 Invalid input. The document parameter is invalid. errorMsg : %s. 文档中的参数不合法。 请查阅创建批量任务 页面“请求参数”部分并对参数document进行检查。 400 IOTDA.014204 Invalid input. The targets and targets_filter cannot both be empty. targets和targets_filter参数不能全部为空。 请保证其中一个参数不为空。 400 IOTDA.014205 Invalid input. The key of targets_filter only supports %s. targets_filter参数的key只支持指定类型。 请查阅创建批量任务 页面“请求参数”部分并对参数targets_filter进行检查。 400 IOTDA.014207 Invalid input. The start time cannot be earlier than the current time, and the latest start time cannot exceed %s days. 开始时间不能早于当前时间,最晚启动事件不能超过指定天数。 请查阅创建批量任务 页面“请求参数”部分并对参数schedule_time进行检查。 400 IOTDA.014208 Invalid input. retry_count and retry_interval depend on each other and must be assigned at the same time. retry_count和retry_interval参数互相依赖,并且必须同时分配。 请保证retry_count和retry_interval参数同时不为空。 400 IOTDA.014209 Invalid input. The task cannot be stopped because it is completed or being stopped. 任务不能停止,因为任务已经完成或者正在停止中。 请确认任务是否处于已完成或停止状态。 400 IOTDA.014210 Invalid input. The parameter 'targets_filter' does not support multiple keys. targets_filter参数只支持一个key。 请排查请求参数是否符合华为云文档要求。 400 IOTDA.014216 Invalid input. The task cannot retry because the task has succeeded, stopped, being stopped or is waiting. 任务不能重试,因为任务已经成功、停止、正在停止或者等待中。 请确认任务是否处于成功、停止、正在停止或者等待中。 400 IOTDA.014219 Invalid input. The target is not in the task. 目标不在该任务中。 请确认该目标是否在该任务中。 400 IOTDA.014300 Operation not allowed. The number of certificates has reached the upper limit (%s). 证书数量达到上限。 证书数量已达到上限,请删除无用证书后重试,单租户下证书上限:100。 400 IOTDA.014301 Invalid certificate content. 证书内容不合法。 请检查证书内容是否符合X509格式要求,证书内容解析参考证书内容解析。 400 IOTDA.014302 Invalid input. The certificate (certificate_id: %s) already exists. 证书已存在。 您已上传相同内容证书,无需重复上传。 400 IOTDA.014303 Operation not allowed. Upload certificate failed. 证书上传失败。 请联系华为工程师分析解决。 400 IOTDA.014304 Operation not allowed. Delete certificate failed. 证书删除失败。 请联系华为工程师分析解决。 400 IOTDA.014305 Operation not allowed. Query certificate failed. 证书查询失败。 请联系华为工程师分析解决。 400 IOTDA.014307 Operation not allowed. The certificate failed to verify the verifyCode. 证书验证码校验失败。 校验证书的cn_name与当前CA证书的校验码不一致,请核对后重新生成校验证书认证。 400 IOTDA.014308 Operation not allowed. The certificate failed to verify the path. 校验证书路径失败。 校验证书路径与当前CA证书路径不一致,请确保两者是由同一个CA机构颁发。 400 IOTDA.014309 The certificate is expired or about to expire. The expiry date must be seven days later than current date. 证书即将过期或已过期。 请重新申请有效证书。 400 IOTDA.014310 The size of the certificate file cannot be larger than 1 MB and the file name must match the pattern ^[.a-zA-Z0-9_-]{1,255}$. 证书文件不能大于1MB且文件名必须符合^[.a-zA-Z0-9_-]{1,255}$正则。 请重新上传符合条件的证书。 400 IOTDA.014311 The certificate is in use and cannot be deleted. 该证书正在使用中无法删除。 请解除证书关联后再删除。 400 IOTDA.014312 Invalid input. The certificate scene does not exist. 证书场景不存在。 请确认请求参数是否正确。 400 IOTDA.014313 Invalid input. The certificate scene already exists. 证书场景已存在。 请确认请求参数是否正确。 400 IOTDA.014314 Invalid input. The server certificate does not exist. 服务器证书不存在。 请确认请求参数是否正确。 400 IOTDA.014315 Invalid input. The CA certificate does not exist. CA证书不存在。 请确认请求参数是否正确。 400 IOTDA.014316 Invalid input. Failed to parse the private key and certificate. 私钥与证书解析失败。 请检查私钥与证书是否合法是否匹配。 400 IOTDA.014318 Invalid input. The CA certificate not bind provisioning-template. CA证书未绑定模板。 请绑定模板后重试。 400 IOTDA.014320 Invalid input. The provisioning-template is not exist. 指定模板不存在。 请确认指定模板是否存在后重试。 400 IOTDA.014322 Invalid input. The same CA certificate has been bound provisioning-template in another application. 其他应用下已有相同CA证书绑定了模板。 请解绑其他应用下的证书模板后重试。 400 IOTDA.014602 Invalid input. The batch task file name already exists. 批量任务文件名已存在。 请更换文件名后重试。 400 IOTDA.014603 Invalid input. The size of the batch task file exceeds the upper limit. 批量任务文件的大小超过最大限制。 单个批量任务文件的大小最大限制为4M。 400 IOTDA.014604 Invalid input. The number of lines in the batch task file exceeds the upper limit. 批量任务文件行数超过最大限制。 单个批量文件行数最大限制为30000行。 400 IOTDA.014605 Invalid input. The resource-suffix of the batch task file is wrong. 批量任务文件后缀名错误。 请查阅上传批量任务文件页面“请求参数”部分并对参数file进行检查。 400 IOTDA.014606 Invalid input. Invalid batch task file name. 批量任务文件名不合法。 请查阅上传批量任务文件页面“请求参数”部分并对参数file进行检查。 400 IOTDA.014608 Invalid input. The content of batch task file is invalid. 批量任务文件内容不合法。 请排查请求参数是否符合华为云文档要求。 400 IOTDA.014900 Invalid input. The search SQL contains unknown field.%s. 搜索SQL语句包含不识别的字段名。 请检查搜索SQL语句,修正不合法的字段,然后重试。 400 IOTDA.014901 Invalid input.The SQL statement contains invalid parameters.%s. 搜索SQL语句包含不合法的参数,或者数据类型与运算符不匹配。 请检查搜索SQL语句,修正不合法的参数,然后重试。 400 IOTDA.014902 Invalid input.The search SQL is invalid.%s. 搜索SQL语法错误。 请检查搜索SQL语句,参考文档使用正确的语法,然后重试。 400 IOTDA.015100 Invalid input. proxy_name is already exists. 设备代理名已存在。 请更换参数proxy_name后再重试。 400 IOTDA.015200 Invalid input. policy_name is already exists. 设备策略名已存在。 请更换参数policy_name后再重试。 400 IOTDA.015203 Invalid input. The bind target not exist or does not belong to the application. 绑定对象不存在或者绑定对象与设备策略不在同一资源空间下。 请排查请求参数是否有误并确认目标对象是否在对应资源空间下。 400 IOTDA.015205 Invalid input. The target has been bound to the device-policy. 目标对象已经绑定该设备策略。 目标对象已经绑定该设备策略,无需再绑定。 400 IOTDA.015206 Invalid input. The device-policy id does not exist. 设备策略id不存在。 设备策略id不存在,请检查参数是否有误。 400 IOTDA.015300 Invalid input. template_name is already exists. 模板名已存在。 请更换参数template_name后再重试。 400 IOTDA.015304 Invalid input. The parameter defined in the template does not exist. 证书信息不存在模板引用参数 请检查设备证书信息是否齐全。 400 IOTDA.015305 Invalid input. The field [template_body.resources.device.product_id] does not exist. 指定的产品id不存在。 请排查请求参数是否有误并确认产品id是否存在。 400 IOTDA.016000 Invalid input, The queue name already exist in the same spUserName. 队列名称在该用户下已存在。 请更换队列名称后重试。 400 IOTDA.016004 Invalid queue name. 队列名称不合法。 请排查请求参数是否符合华为云文档要求。 400 IOTDA.016005 Invalid AMQP access configuration. amqp对接配置不合法。 请排查请求参数是否符合华为云文档要求。 400 IOTDA.016006 Invalid HTTP access configuration. http对接配置不合法。 请排查请求参数是否符合华为云文档要求。 400 IOTDA.016008 The integration configuration already exists. 对接配置已存在。 请排查请求参数是否符合华为云文档要求。 400 IOTDA.019304 Invalid input. Invalid obs info. obs信息无效。 请确认请求参数region_name、bucket_name、object_key是否正确。 400 IOTDA.019305 Invalid input. The format of the upgrade package is incorrect. 升级包格式不正确。 请参考华为云文档软固件包上传中升级包格式限制。 400 IOTDA.019306 Invalid input. The upgrade package size exceeds the limit. 升级包大小超过限制。 请参考华为云文档软固件包上传中升级包大小限制。 400 IOTDA.019600 Invalid input. The bridge name is duplicated. 网桥名称重复。 请确认是否已经创建了相同名称的网桥。 400 IOTDA.019603 Invalid input. The bridge ID is duplicated. 网桥ID重复。 请确认是否已经创建了相同ID的网桥。 400 IOTDA.019702 The tunnel has already closed. 隧道已关闭。 隧道已关闭,请重新创建隧道。 400 IOTDA.019708 Failed to deliver tunnel information to the device. 下发隧道配置通知给设备失败。 请确认设备运行正常且订阅了接收隧道通知的主题。 400 IOTDA.021304 The number of device log configurations exceeds the upper limit. 设备日志配置数量超过用户最大配额。 请关闭部分设备设备日志收集,然后再重新开启。 400 IOTDA.021310 Invalid input. The authorizer name is duplicated. 自定义鉴权名称重复。 请确认是否已经创建了相同名称的自定义鉴权器。 401 IOTDA.000002 Authentication failed. 鉴权失败。 请排查请求中的鉴权参数是否携带正确。 401 IOTDA.000025 SP user authentication failed. SP Token鉴权失败。 请检查sp token是否正确。 401 IOTDA.000026 Stage user authentication failed. stage token鉴权失败。 请检查stage token是否正确。 401 IOTDA.001003 Incorrect AppId or secret. 资源空间与密钥不匹配。 请排查该密钥是否正确。 401 IOTDA.014032 Invalid input. The time does not match. 时间不匹配。 请联系华为工程师解决。 401 IOTDA.019704 Invalid tunnel access token. tunnel_access_token不合法。 请确认请求参数是否正确。 401 IOTDA.019705 The tunnel access token is expired. tunnel_access_token已过期。 请重新创建隧道后重试。 403 IOTDA.000004 Invalid access token. 非法token。 请排查请求中的token是否正常。 403 IOTDA.000005 Refresh access token failed. 刷新token失败。 请排查请求中的refreshToken是否正确。 403 IOTDA.000015 The account is frozen. 账户已被冻结。 联系账户负责人进行解冻。 403 IOTDA.000021 Operation not allowed. User not found by IAM token or the authorized user has not subscribed to IoTDA. 没有找到IAM Token所对应的用户信息或该用户没有订阅 设备接入服务 (IOTDA)。 请排查IAM Token所在用户是否订阅了设备接入服务(IOTDA)。 403 IOTDA.000022 Operation not allowed. The user does not have the permission. 该用户没有权限。 请排查该用户是否有权限访问。 403 IOTDA.000023 Request frequency reached the upper limit %s. 请求已经达到限制速率。 请降低请求频率, 该请求速率已达到限制。 403 IOTDA.000024 Operation not allowed. Only one token is allowed in the request header. 请求头只能放置一个Token域。 请删除多余的token头域。 403 IOTDA.000028 System is being maintained. The configuration cannot be modified. 系统正在维护,请稍后重试。 请稍后重试。 403 IOTDA.000033 Operation not allowed. The current instance does not support the parameter. 当前实例规格不支持此功能参数。 请排查请求参数是否符合华为云文档要求。 403 IOTDA.000034 Operation not allowed. The user does not have the permission. 该用户没有权限。 请排查该用户是否有权限访问。 403 IOTDA.001000 The application does not exist. 该资源空间不存在。 请确定是否已在平台创建资源空间并检查资源空间ID是否正确。 403 IOTDA.001002 Operation not allowed. You do not have the permissions required to access the application. 该应用没有权限访问。 请检查该应用是否已被授权。 403 IOTDA.001005 Operation not allowed. The parameter 'app_id' is not carried, and the authorized user has more than one application. Include the parameter 'app_id', or contact Huawei technical support engineers to merge application data. 该用户下有多个应用的情况下未携带appId访问接口。 请携带对应的appId或联系华为工程师合并应用数据。 403 IOTDA.001006 Operation not allowed. Application not found by authorized user or the authorized user has no application. 用户下没有资源空间或资源空间与用户不匹配。 请排查用户下是否有资源空间或是否有指定的资源空间。 403 IOTDA.001007 Operation not allowed. The application does not belong to the authorized user. 资源空间与用户信息不匹配。 请排查该用户下是否有指定的资源空间。 403 IOTDA.001008 Operation not allowed. The app name already exists. 资源空间名称已存在。 请更换资源空间名称。 403 IOTDA.001009 Operation not allowed. The maximum number of applications has been reached. 资源空间数量已达到上限。 该用户资源空间数量已达到上限,请删掉多余的资源空间后再注册。 403 IOTDA.001010 Operation not allowed. The default app cannot be deleted. 禁止删除默认资源空间。 请修改参数后重试。 403 IOTDA.001014 Operation not allowed. The application does not belong to the authorized instance. 资源空间与实例信息不匹配。 请排查该实例下是否有指定的资源空间。 403 IOTDA.003002 Operation not allowed. The group name already exists. 设备组名称已被使用。 请更换设备组名称后重试,该设备组名称已被使用。 403 IOTDA.003003 Operation not allowed. Max groups (1,000) reached. 设备组数量已达到最大上限1000个。 请删除多余设备组后重试,该设备组数量已达上限。 403 IOTDA.003004 Operation not allowed. Max group depths (5) reached. 该设备组深度已达上限(5),不允许再次注册子设备组。 请更换深度较小的父设备组的ID进行注册,该群组深度已达上限,不允许再注册子群组。 403 IOTDA.003005 Operation not allowed. The device already exists in the group. 该设备在设备组中已存在。 该设备在设备组中已存在,无需再次添加。 403 IOTDA.003006 Operation not allowed. The device does not exist in the group. 该设备在设备组中不存在。 该设备在设备组中不存在,无需删除。 403 IOTDA.003007 Operation not allowed. Max devices (20,000) reached for the group. 设备组中的设备数量达到最大限制20000。 请删除多余设备或更换群组。 403 IOTDA.003008 Operation not allowed. A device can be added to up to 10 groups. 一个设备最多只能添加到10个设备组中。 请将该设备从多余的群组中删除后重试,该设备所在群组已达到最大限制。 403 IOTDA.003009 Operation not allowed. The parent group contains child groups. Delete the child groups and try again. 该设备组为其他设备组的父设备组,若想删除此群组,需先删除其子设备组。 如需删除该设备组,请先删除该群组下的所有子设备组后再执行该操作。 403 IOTDA.003010 Operation not allowed. The group contains devices and cannot be deleted. 该群组下存在设备,禁止删除。 如需删除,请先确保该设备组下的设备无用,删除该设备组下的所有设备后再删除该设备组。 403 IOTDA.003011 Operation not allowed. The group and device do not belong to the same application. 群组和设备不属于同一个资源空间。 请使用相同资源空间下的群组和设备进行操作。 403 IOTDA.004001 Operation not allowed. Max bindable tags (10) reached for the device. 设备绑定的标签数量超过最大限制10。 请删除多余的标签再进行绑定,该设备已绑定标签数达到最大限制。 403 IOTDA.005000 Operation not allowed. Only one task can be started for a device at a time. 一个设备同时只能开启一个任务。 请手动操作任务结束或者等待当前任务完成后再开启另一个任务。 403 IOTDA.005001 Operation not allowed. The protocol of the device does not support upgrade. 该设备的协议类型不支持升级。 请提交工单 联系华为工程师分析解决。 403 IOTDA.009001 Max application subscription records reached. 应用订阅记录数达到上限。 请删除多余订阅记录,该应用订阅数量已达到上限。 403 IOTDA.009008 The maximum number of queries has been reached. 查询数量超过最大限制。 请排查请求参数是否符合华为云文档要求。 403 IOTDA.010003 The number of rules has reached the upper limit. 规则数量已达到上限。 请删除多余的规则后重试。 403 IOTDA.010037 The rule cannot be deleted because actions exist in the rule. 规则中已存在动作,不能删除规则。 请先删除规则动作,再删除规则。 403 IOTDA.010049 Operation not allowed. Total number of flow control policies exceeds the upper limit (4). 流控策略配置数量超过最大限制4。 请删除多余的流控策略配置后重新创建。 403 IOTDA.013004 Operation not allowed. You have no write permission. 您没有可写的权限。 请排查您的产品属性是否是可写的,若不是,可调用修改产品的接口将属性改成可写。 403 IOTDA.013006 The number of products in the application has reached the upper limit. 该资源空间下产品数量达到上限(1000)。 请删除无用的产品后重试。 403 IOTDA.013007 Operation not allowed. The product is in use and cannot be deleted. 产品已被使用,禁止删除。 删除产品需先删除该产品下设备,如需删除,请确保该产品没有关联设备,再重试删除操作。 403 IOTDA.013009 Operation not allowed. The value of default_value must be writable. default_value必须属于可写属性。 请通过修改产品的接口将该属性设置成可写。 403 IOTDA.013011 Operation not allowed. The number of assets properties has reached the upper limit (%s). 产品资产属性定义个数超过上限。 请删除无用的资产属性定义。 403 IOTDA.013013 Operation not allowed. The protocol type cannot be changed to CoAP. 产品协议类型不支持修改为CoAP。 请重新创建CoAP协议类型产品。 403 IOTDA.013503 Operation not allowed. The number of topics in a product exceeds the upper limit (%s). 一个产品下的主题数量超过最大限制。 请删除无用的主题后再重试。 403 IOTDA.014003 Operation not allowed. The number of frozen devices has reached the upper limit. 冻结设备的数量已达到上限。 请将非必须冻结的设备解冻后再次冻结该设备或联系华为工程师处理。 403 IOTDA.014004 Operation not allowed. This device is online. 该操作只允许设备在“离线”状态下执行。 请使设备调整为“离线”状态,再重试操作。 403 IOTDA.014005 Operation not allowed. This device is not active. 该操作只允许在设备激活后执行。 请先将设备激活。 403 IOTDA.014006 Operation not allowed. The secret cannot be reset. 密码无法被重置。 NB设备未使用密钥,无需重置密钥。 403 IOTDA.014007 Operation not allowed. The PSK cannot be reset. PSK无法被重置。 请修改参数后重试。 403 IOTDA.014015 Operation not allowed. The number of concurrent location service requests has exceeded the upper limit. 位置服务请求的并发超过上限。 请降低接口调用频率。 403 IOTDA.014016 Operation not allowed. The device is not online. 该操作只允许设备在线后执行。 请将设备接入后再重试。 403 IOTDA.014018 Operation not allowed. The device has been frozen and cannot be operated. 该设备是冻结状态,不允许操作。 请将设备解冻后再重试。 403 IOTDA.014019 Operation not allowed. The number of devices of the user has reached the upper limit. 用户下的设备数量达到上限。 请删除无用设备或联系华为工程师分析解决。 403 IOTDA.014020 Operation not allowed. The number of devices bound to this application has reached the upper limit. 资源空间下的设备数量超过最大上限。 请删除无用设备或联系华为工程师分析解决。 403 IOTDA.014021 Operation not allowed. The number of devices has reached the upper limit of the package. 套餐下的设备数量超过最大上限。 请删除无用设备或联系华为工程师分析解决。 403 IOTDA.014022 Operation not allowed. The number of license resources has reached the upper limit. 许可证资源数量已达到上限。 请联系华为工程师分析解决。 403 IOTDA.014024 Operation not allowed. The device already has an endpoint. 该网关已关联子设备,无法直接删除。 删除网关前,必须删除其关联的子设备,如需删除,请确保子设备无用或关联至其他网关,再重试网关删除操作。 403 IOTDA.014026 Operation not allowed. The number of non-security devices has reached the upper limit. 非安全设备的数量已达到上限。 请删除无用的非安全设备或联系华为工程师分析解决。 403 IOTDA.014029 Operation not allowed. The timeout parameter cannot be modified when the device has been activated. 设备激活后不能修改timeout参数。 取消timeout参数的修改或在未激活的设备下操作。 403 IOTDA.014036 Operation not allowed. The device service capabilities are not defined in the product. 该设备的产品未定义设备服务能力。 请使用修改产品接口将该产品添加设备服务能力。 403 IOTDA.014037 Operation not allowed. Max device depths (2 levels) reached. 该设备深度已达到上限(2)。 当前网关最多支持二级子设备。 403 IOTDA.014038 Operation not allowed. Only gateways or directly connected devices are supported. 该操作只支持网关或者直连设备。 请选择直连设备或者网关设备进行操作。 403 IOTDA.014039 Operation not allowed. The device has already been frozen. 该设备是冻结状态,无法操作。 请解冻设备后再进行操作。 403 IOTDA.014040 Operation not allowed. The device is not frozen and cannot be unfrozen. 该设备不是冻结状态,无法解冻。 只能对冻结状态的设备进行解冻操作。 403 IOTDA.014041 Operation not allowed. The device does not belong to the currently connected gateway. 该设备不属于当前连接的网关。 请选择当前连接网关下的子设备进行操作。 403 IOTDA.014101 The number of commands reached the upper limit. 该资源空间下的缓存命令数量达到上限。 请等待缓存命令下发后再下发新命令,或增大缓存命令数。 403 IOTDA.014106 Invalid CommandBody for the MQTT protocol. 适用于mqtt协议的CommandBody不正确。 命令下发接口参数必须为json格式,请确认下发的参数是否正确。 403 IOTDA.014109 Operation not allowed. The command status is not 'PENDING'. 不允许操作,命令的状态不是PENDING。 请联系华为工程师解决。 403 IOTDA.014133 Operation not allowed. The topic has no 'SUBSCRIBE' permission. 操作不允许,该主题没有SUBSCRIBE权限。 请联系华为工程师解决。 403 IOTDA.014202 Operation not allowed. The number of unfinished tasks has reached the upper limit (%s). 未完成的任务数量达到上限。 执行中的批量任务数量已经超出规格限制,请停止未完成任务再重试。 403 IOTDA.014206 Operation not allowed. The number of targets has reached the upper limit (%s). targets数量超过上限。 请排查请求参数是否符合华为云文档要求。 403 IOTDA.014217 Operation not allowed. The target cannot retry because the task of target has succeeded, is waiting or is processing. 目标不能重试,因为目标的任务已经成功、等待中或者正在执行中。 请确认该目标任务是否已经成功、等待中或者正在执行中。 403 IOTDA.014218 Operation not allowed. The target cannot stop because the task of target has succeeded, failed or stopped. 目标不能停止,因为目标的任务已经成功,失败或者停止。 请确认该目标任务是否已经成功,失败或者停止。 403 IOTDA.014220 Operation not allowed. The task type is not supported. 不支持该任务类型。 请确认任务类型是否支持该操作。 403 IOTDA.014221 Invalid input. The task cannot be deleted because it is not completed. 任务不能删除,因为任务没有完成。 请检查任务状态是否为成功,失败,部分成功或已停止。 403 IOTDA.014319 Operation not allowed. The CA certificate state is not verified, please verify the certificate first. CA证书状态是未验证,请先校验CA证书。 请验证CA证书后重试。 403 IOTDA.014601 Operation not allowed. The number of batch task files of the current user exceeds the upper limit. 当前用户下的批量任务文件数达到上限。 请删除多余文件后重试。 403 IOTDA.014607 Operation not allowed. The batch task file is in use and cannot be deleted. 该批量任务文件正在使用,不能被删除。 请等待任务完成后再操作。 403 IOTDA.015101 Operation not allowed. The device already exists in the other device-proxy. 设备已存在于其他设备代理中,不允许添加到当前设备代理。 请更换代理设备后重试。 403 IOTDA.015102 Operation not allowed. The endpoint device is not allowed to be added to device-proxy. 子设备不允许添加至设备代理中。 子设备不允许添加至代理中,请更换设备后重试。 403 IOTDA.015104 Operation not allowed. The number of device-proxy has reached the upper limit (10). 设备代理数量已达到最大上限。 请删除多余代理设备后重试。 403 IOTDA.015201 Operation not allowed. The number of device-policy has reached the upper limit (%s). 设备策略数量已经达到上限。 请删除多余的设备策略后再重试。 403 IOTDA.015204 Operation not allowed. The number of policies bound to the target reaches the upper limit. 目标对象绑定的设备策略数量达到上限。 请为目标对象解绑无用的设备策略后重试。 403 IOTDA.015303 Operation not allowed. The provisioning-template is associated by certificate. 模板被证书关联中,不允许删除。 请在设备CA证书中解除关联后重试。 403 IOTDA.015306 Operation not allowed. The number of provisioning-template has reached the upper limit (10). 模板数量达到上限。 请删除不需要的模板后重试。 403 IOTDA.016001 Operation not allowed, The number of queues exceeds the limit for each spUserName. 队列数量已达到用户最大配额。 单个租户只能创建100个AMQP队列。 403 IOTDA.016003 Operation not allowed. The queue is in use. 该队列已被使用。 请取消该队列相应的订阅后再进行操作。 403 IOTDA.016009 Operation not allowed. The number of queues exceeds the system limit. 队列数量已达到系统最大配额。 请联系华为工程师分析解决。 403 IOTDA.019303 Operation not allowed. The number of packages for the user has reached the upper limit. 用户下的升级包数量达到上限。 请删除无用升级包。 403 IOTDA.019601 Operation not allowed. The number of bridges in the system has reached the upper limit. 租户下的网桥数已经达到最大值。 请确认租户下的网桥数量是否已经为20个。 403 IOTDA.019701 Operation not allowed. The device does not belong to the authorized user. 设备不属于该用户。 设备不属于该用户,请确认设备ID是否正确。 403 IOTDA.019703 The open tunnel cannot be deleted. 处于打开状态的隧道不能被删除。 请先关闭设备隧道后再进行删除。 403 IOTDA.019706 Operation not allowed. The number of tunnels for a device has reached the upper limit. 单设备的隧道个数已达到限制值。 请删除老的设备隧道后再进行重试。 403 IOTDA.019707 Operation not allowed. The number of device tunnels for a user has reached the upper limit. 租户的设备隧道个数已达到限制值。 请删除老的设备隧道后再进行重试。 403 IOTDA.021311 Operation not allowed. The number of authorizer has reached the upper limit(10). 租户下的自定义鉴权数已经达到最大值。 请确认租户下的自定义鉴权数是否已经为10个。 403 IOTDA.021313 The function does not exist. 该函数在FunctionGraph不存在。 请确认该函数是否在FunctionGraph是否已经创建。 404 IOTDA.000016 Target not found. 未找到目标。 请联系华为工程师分析解决。 404 IOTDA.000029 Invalid input. The path does not exist. 请求路径不存在。 请检查请求路径是否正确。 404 IOTDA.003000 The group does not exist. 群组不存在。 请确认是否有该设备组或设备组参数是否携带正确。 404 IOTDA.003001 The parent group does not exist. 父级设备组不存在。 请确认是否有该设备组或设备组参数是否携带正确。 404 IOTDA.004000 The resource does not exist. 资源不存在。 请确认请求参数是否正确。如deviceId, resourceId等。 404 IOTDA.009003 The subscription subject cannot be found. 查询不到该订阅记录。 请确认请求中的参数是否与待操作的订阅匹配。 404 IOTDA.010002 The rule does not exist. 该规则不存在。 请确认平台是否存在该规则或请求参数是否正确。 404 IOTDA.010020 The rule action does not exist. 规则动作不存在。 请确认平台是否存在该规则动作或请求参数是否正确。 404 IOTDA.010043 The stack policy does not exist. 积压策略配置不存在。 请确认平台是否存在对应积压策略配置或请求参数是否正确。 404 IOTDA.010046 The flow control policy does not exist. 流控策略配置不存在。 请确认平台是否存在对应流控策略配置或请求参数是否正确。 404 IOTDA.013014 The product does not exist. 产品不存在。 请排查请求参数是否正确或产品是否已经在平台注册。 404 IOTDA.013500 The topic does not exist. 该主题不存在。 请联系华为工程师解。 404 IOTDA.014000 The device does not exist. 设备不存在。 请排查请求参数是否有误并确认是否有在平台注册该设备。 404 IOTDA.014014 The IMSI does not exist. IMSI参数值不能为空。 请输入非空IMSI值后重试。 404 IOTDA.014042 The device access information does not exist. 设备接入信息不存在。 请检查设备是否接入平台并激活。 404 IOTDA.014103 The device command does not exist. 设备命令不存在。 请确认请求参数是否正确。 404 IOTDA.014131 The message does not exist. 该消息不存在。 请联系华为工程师解决。 404 IOTDA.014200 The batch task does not exist. 该任务不存在。 请排查请求参数中的task_id是否有效。 404 IOTDA.014306 The certificate does not exist. 证书不存在。 目标证书id不存在,请确认请求参数是否正确。 404 IOTDA.014600 The batch task file does not exist. 批量任务不存在。 请确认请求参数是否正确。 404 IOTDA.015105 device-proxy not exist or does not belong to the application. 设备代理不存在或者代理不在指定的资源空间下。 请排查请求参数是否有误并确认是否有在资源空间注册该设备代理。 404 IOTDA.015202 Invalid input. device-policy not exist or does not belong to the application. 设备策略不存在或者设备策略不在指定的资源空间下。 请排查请求参数是否有误并确认是否有在资源空间创建该设备策略。 404 IOTDA.015301 provisioning-template does not exist. 指定模板不存在。 请排查请求参数是否有误并确认资源是否存在。 404 IOTDA.016002 The queue ID does not exist. 队列ID不存在。 请确认请求参数是否正确。 404 IOTDA.019300 The package does not exist. 升级包不存在。 请确认是否有该升级包或请求参数package_id是否携带正确。 404 IOTDA.019602 Invalid input. The bridge does not exist. 指定网桥不存在。 请确认该网桥是否已经创建。 404 IOTDA.019700 Invalid input. The tunnel does not exist. 隧道不存在。 请确认是否有隧道创建成功并且隧道ID填写正确。 404 IOTDA.021312 The authorizer does not exist. 该自定义鉴权不存在。 请确认该自定义鉴权是否已经创建。 405 IOTDA.000003 The request method is not supported. 不支持该请求方式。 请排查请求方式是否与文档中的保持一致。 405 IOTDA.000019 Method not allowed. http请求中的请求方法不正确。 请排查请求方式是否与文档中的保持一致。 406 IOTDA.000037 Invalid input. The Accept is missing or not supported in the request header. 请求头中缺少或携带了不支持的Accept。 请排查请求头中是否携带了正确的Accept。 409 IOTDA.014030 The version of the serviceId %s conflicts with another one. 该serviceId的版本号冲突。 请使用正确的版本号进行配置。 409 IOTDA.014047 Device status update conflicts occur. 设备状态更新冲突。 请检查是否重复发送请求或网关设备已下线。 415 IOTDA.000036 Invalid input. The Content-Type is missing or not supported in the request header. 请求头中缺少或携带了不支持的Content-Type。 请排查请求头中是否携带了正确的Content-Type。 429 IOTDA.014102 Congestion occurs. The network is under flow control. 发生拥堵, 并且当前网络受到流量控制。 请联系华为工程师解决。 500 IOTDA.000001 Internal server error. 服务器内部错误。 请联系华为工程师分析解决。 500 IOTDA.000007 The data in database is abnormal. 数据库中的数据不正常。 请联系华为工程师分析解决。 500 IOTDA.000020 Decrypt IAM token failed. IAM Token解析失败。 请联系华为工程师分析解决。 父主题: 附录
  • 请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 X-Auth-Token 否 String 参数说明:用户Token。通过调用IAM服务 获取IAM用户Token接口获取,接口返回的响应消息头中“X-Subject-Token”就是需要获取的用户Token。简要的获取方法样例请参见 Token认证。 Instance-Id 否 String 参数说明:实例ID。物理多租下各实例的唯一标识,建议携带该参数,在使用专业版时必须携带该参数。您可以在IoTDA管理控制台界面,选择左侧导航栏“总览”页签查看当前实例的ID,具体获取方式请参考查看实例详情 。
  • 请求参数 表3 请求Header参数 参数 是否必选 参数类型 描述 X-Auth-Token 否 String 参数说明:用户Token。通过调用IAM服务 获取IAM用户Token接口获取,接口返回的响应消息头中“X-Subject-Token”就是需要获取的用户Token。简要的获取方法样例请参见 Token认证。 Instance-Id 否 String 参数说明:实例ID。物理多租下各实例的唯一标识,建议携带该参数,在使用专业版时必须携带该参数。您可以在IoTDA管理控制台界面,选择左侧导航栏“总览”页签查看当前实例的ID,具体获取方式请参考查看实例详情 。
  • 响应参数 状态码: 200 表4 响应Body参数 参数 参数类型 描述 device_proxies Array of QueryDeviceProxySimplify objects 代理设备列表 page Page object 查询结果的分页信息。 表5 QueryDeviceProxySimplify 参数 参数类型 描述 proxy_id String 参数说明:设备代理ID。用来唯一标识一个代理规则 proxy_name String 参数说明:设备代理名称 effective_time_range EffectiveTimeRangeResponseDTO object 参数说明:规则有效期 app_id String 参数说明:资源空间ID。 表6 EffectiveTimeRangeResponseDTO 参数 参数类型 描述 start_time String 设备代理开始生效的时间,使用UTC时区,格式:yyyyMMdd'T'HHmmss'Z' end_time String 设备代理失效的时间,必须大于start_time,使用UTC时区,格式:yyyyMMdd'T'HHmmss'Z' 表7 Page 参数 参数类型 描述 count Long 满足查询条件的记录总数。 marker String 本次分页查询结果中最后一条记录的ID,可在下一次分页查询时使用。
  • 响应示例 状态码: 200 OK { "device_proxies" : [ { "proxy_id" : "04ed32dc1b0025b52fe3c01a27c2babc", "proxy_name" : "testProxyName", "app_id" : "jeQDJQZltU8iKgFFoW060F5SGZka", "effective_time_range" : { "start_time" : "20200812T121212Z", "end_time" : "20210812T121212Z" } } ], "page" : { "count" : 1, "marker" : "66178add3b98944277731d0a" } }
  • URI GET /v5/iot/{project_id}/device-proxies 表1 路径参数 参数 是否必选 参数类型 描述 project_id 是 String 参数说明:项目ID。获取方法请参见 获取项目ID 。 表2 Query参数 参数 是否必选 参数类型 描述 app_id 否 String 参数说明:资源空间ID。此参数为非必选参数,存在多资源空间的用户需要使用该接口时,可以携带该参数查询指定资源空间下的设备代理列表,不携带该参数则会查询该用户下所有设备代理。 取值范围:长度不超过36,只允许字母、数字、下划线(_)、连接符(-)的组合。 proxy_name 否 String 参数说明:设备代理名称。 取值范围:长度不超过64,只允许中文、字母、数字、以及_?'#().,&%@!-等字符的组合。 最小长度:1 最大长度:64 limit 否 Integer 参数说明:分页查询时每页显示的记录数。 取值范围:1-50的整数,默认值为10。 最小值:1 最大值:50 缺省值:10 marker 否 String 参数说明:上一次分页查询结果中最后一条记录的ID,在上一次分页查询时由物联网平台返回获得。分页查询时物联网平台是按marker也就是记录ID降序查询的,越新的数据记录ID也会越大。若填写marker,则本次只查询记录ID小于marker的数据记录。若不填写,则从记录ID最大也就是最新的一条数据开始查询。如果需要依次查询所有数据,则每次查询时必须填写上一次查询响应中的marker值。 取值范围:长度为24的十六进制字符串,默认值为ffffffffffffffffffffffff。 缺省值:ffffffffffffffffffffffff offset 否 Integer 参数说明:表示从marker后偏移offset条记录开始查询。默认为0,取值范围为0-500的整数。当offset为0时,表示从marker后第一条记录开始输出。限制offset最大值是出于API性能考虑,您可以搭配marker使用该参数实现翻页,例如每页50条记录,1-11页内都可以直接使用offset跳转到指定页,但到11页后,由于offset限制为500,您需要使用第11页返回的marker作为下次查询的marker,以实现翻页到12-22页。 取值范围:0-500的整数,默认为0。 最小值:0 最大值:500 缺省值:0
共100000条