GBase 8s
运维管理
文章
常见SQL错误的排查方法
发表于2024-07-03 13:14:241237次浏览0个评论
常见sql错误的排查方法
一、如果执行SQL时遇到报错,定位问题的方法一般有:
方法一,SQL语句的报错信息,一般比较直观:
“-201 A syntax error has occurred.”
“-206 The specified table <table-name> is not in the database.”
方法二,可以用finderr命令查看具体错误信息,比如:

方法三,查看实例的online.log,该log的路径由onconfig中参数MSGPATH控制
#MSGPATH --指定日志文件的路径
MSGPATH $GBASEDBTDIR/tmp/online.log二、以上还无法定位问题的话,另一个收集信息的方法,onmode -I:
使用onmode -I选项来启动或停止诊断信息的收集。
当遇到错误时,可以指定onmode -I iserrno选项以开始收集诊断信息。此外,还可以指定会话ID,以便仅针对特定会话收集信息。
若要停止诊断信息的收集,请使用不带任何其他参数的onmode -I选项。三、举例:创建存储过程成功,调用存储过程时报错,不好定位问题
create database test with log;
set environment sqlmode 'oracle';
create or replace procedure pro1 as
sqlstr varchar(100);
begin
sqlstr := 'create create table t1(id int)';
execute immediate sqlstr;
end;
/
call pro1();
执行onmode -I 201,201为上图报错语句的错误号

执行完上述操作,cd $GBASEDBTDIR/tmp,会看到af前缀文件

查看af文件,可以搜索onstat -g sql,会看到当时错误的语句以及“Last parsed SQL statement”。
由此定位到问题语句“create create table t1(id int)”
评论
登录后才可以发表评论
热门帖子
- 12025-12-01浏览数:82258
- 22023-05-09浏览数:23050
- 42023-09-25浏览数:16034
- 52020-05-11浏览数:15407