返回首页

gbase数据、南大通用产品文档:GBase8a

更新日期:2024年09月11日

GBA-02IS-0008
错误码
错误标识
错误信息
GBA-02IS-0008

execute step: %s
错误出现原因
执行insert step 错误
分析与建议
在执行insert 时失败,需要针对错误信息进行分析。

功能说明
语句用于获取错误缓冲区的内容,包括报错信息、DML 操作影响结果数等
语法格式
GET [CURRENT | STACKED] DIAGNOSTICS
{
statement_information_item [, statement_information_item] ...
| CONDITION condition_number condition_information_item
[, condition_information_item] ...
}
statement_information_item:
target = statement_information_item_name
condition_information_item:
target = condition_information_item_name
statement_information_item_name:

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
1385
NUMBER
| ROW_COUNT
condition_information_item_name: {
CLASS_ORIGIN
| SUBCLASS_ORIGIN
| RETURNED_SQLSTATE
| MESSAGE_TEXT
| GBASE_ERRNO
| CONSTRAINT_CATALOG
| CONSTRAINT_SCHEMA
| CONSTRAINT_NAME
| CATALOG_NAME
| SCHEMA_NAME
| TABLE_NAME
| COLUMN_NAME
| CURSOR_NAME
}
表5- 191 参数说明
参数名称


statement_information_item
statment 执行情况信息捕获反馈,包括NUMBER、
ROW_COUNT
condition_information_item
捕获异常情况信息。
表5- 192 statement_information_item_name 参数说明
参数名称


number
number 中包含WARNING 和错误的数量。
row_count
只记录GET DIAGNOSTICS 命令之前最后一条DML 操作
的影响行数,不能累加,如果想获取多条DML 语句的影响
行数,需要在每条DML 语句后执行GET DIAGNOSTICS
命令。
表5- 193 condition_information_item_name 参数说明
参数名称


no
表示错误或WARNINGS 的序号。
number
number 中包含WARNING 和错误的数量。
row_count
只记录GET DIAGNOSTICS 命令之前最后一条DML 操作
的影响行数,不能累加,如果想获取多条DML 语句的影响
行数,需要在每条DML 语句后执行GET DIAGNOSTICS
命令。
gbase_errno
记录错误号。
returned_sqlstate
记录错误状态。
message_text
记录错误信息。

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
1386
示例
示例1:获取错误数。
DROP TABLE IF EXISTS t;
DROP TABLE IF EXISTS tt;
DROP PROCEDURE IF EXISTS p1;
DELIMITER //
CREATE PROCEDURE p1()
BEGIN
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION
BEGIN
GET DIAGNOSTICS @num1 = NUMBER;
SELECT @num1;
END;
DELETE FROM tt ;
DROP TABLE IF EXISTS t;
GET DIAGNOSTICS @num2 = NUMBER;
SELECT @num2;
END //
DELIMITER ;
CALL p1;
执行结果如下:
gbase> CALL p1;
+-------+
| @num1 |
+-------+
| 1 |
+-------+
1 row in set
+-------+
| @num2 |
+-------+
| 1 |
+-------+
1 row in set
Query OK, 0 rows affected, 8 warnings
gbase> SHOW WARNINGS; +-------+------+-----------------------------------------+
| Level | Code | Message |
+-------+------+-----------------------------------------+
| Note | 1051 | 192.168.103.77:5050 - Unknown table 't' |
| Note | 1051 | 192.168.103.75:5050 - Unknown table 't' |
| Note | 1051 | 192.168.103.74:5050 - Unknown table 't' |

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
1387
| Note | 1051 | 192.168.103.76:5050 - Unknown table 't' |
| Note | 1051 | 192.168.103.77:5258 - Unknown table 't' |
| Note | 1051 | 192.168.103.75:5258 - Unknown table 't' |
| Note | 1051 | 192.168.103.76:5258 - Unknown table 't' |
| Note | 1051 | 192.168.103.74:5258 - Unknown table 't' |
+-------+------+-----------------------------------------+
8 rows in set
示例2:获取DML 操作影响的行数。非DML 操作执行完成后,如果用GET
DIAGNOSTICS 语法获得DML 操作影响行数,得到的结果是-1。
DROP PROCEDURE IF EXISTS p1;
DELIMITER |
CREATE PROCEDURE p1()
BEGIN
DECLARE row_count INT;
GET DIAGNOSTICS row_count = ROW_COUNT;
SELECT row_count;
END|
DELIMITER ;
CALL p1();
执行结果如下:
gbase> CALL p1();
+-----------+
| row_count |
+-----------+
| -1 |
+-----------+
1 row in set
示例3:获取DML 操作影响的行数。DML 操作执行完成后,如果用GET
DIAGNOSTICS 语法获得DML 操作影响行数,得到的结果是1。
DROP TABLE IF EXISTS tt;
CREATE TABLE t(a int);
DROP PROCEDURE IF EXISTS p1;
DELIMITER |
CREATE PROCEDURE p1()
BEGIN
DECLARE row_count INT;
INSERT INTO t VALUES(1);

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
1388
GET DIAGNOSTICS row_count = ROW_COUNT;
SELECT row_count;
END|
DELIMITER ;
CALL p1();
执行结果如下:
gbase> CALL p1();
+-----------+
| row_count |
+-----------+
| 1 |
+-----------+
1 row in set
Query OK, 0 rows affected
示例4:获取错误码,错误状态和错误信息。
DROP TABLE IF EXISTS t1;
CREATE TABLE t1(i int,vc varchar(20))distributed by('i');
DROP PROCEDURE IF EXISTS p1;
DELIMITER |
CREATE PROCEDURE p1()
BEGIN
DECLARE errno varchar(50);
DECLARE sstate varchar(50);
DECLARE message varchar(50);
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION
BEGIN
GET DIAGNOSTICS CONDITION 1
errno=gbase_errno,sstate=returned_sqlstate,message=message_text;
END;
DELETE FROM t1 WHERE a>0;
SELECT errno,sstate,message;
END |
DELIMITER ;
CALL p1();
执行结果如下:
gbase> CALL p1(); +-------+--------+--------------------------------------+
| errno | sstate | message |
+-------+--------+--------------------------------------+
| 1054 | 42S22 | Unknown column 'a' in 'where clause' |
+-------+--------+--------------------------------------+
1 row in set
Query OK, 0 rows affected

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
1389

功能

在全表导出时,指定被导出表的隶属的用户名,该参数不能与query 参数同
时使用;

如果不指定该参数,默认为登录用户。
示例
示例1
--owner_name ='use1'
示例2
--owner_name ='use1'
示例3
-o'user1'
参数说明
表4- 97 参数说明
参数全称
参数简称
取值范围
默认值
owner_name
o

登录用户

GBase 8a MPP Cluster 产品手册
4 管理员指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
530