【short dump】DBIF_RSQL_SQL_ERROR

本文介绍了一种在自定义程序执行过程中遇到的SQL错误-289,并详细解释了错误发生的原因及其解决方案。通过添加异常处理代码及改进数据库操作方式,成功解决了因死锁导致的shortdump问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



问题描述:在执行一个自定义开发的程序的时候,出现shortdump

错误如下:

Runtime Errors:         DBIF_RSQL_SQL_ERROR

Exception :                 CX_SY_OPEN_SQL_DB

类别                   Installation Errors
运行时错误             DBIF_RSQL_SQL_ERROR
异常                        CX_SY_OPEN_SQL_DB
日期和时间             06/05/2015 17:04:32
----------------------------------------------------------------------------------------------------

----------------------------------------------------------------------------------------------------
|短文本                                                                                            |
|    SQL error "-289" occurred while accessing table "YBALNC".                             |
----------------------------------------------------------------------------------------------------

----------------------------------------------------------------------------------------------------
|发生了什么?                                                                                      |
|    Database error text: "SQL0289N  Unable to allocate new pages in table space                   |
|     "BNR#STABI".  SQLSTATE=57011 row=1".                                                         |
----------------------------------------------------------------------------------------------------

报错原因:(可能的原因)

  1. deadlock

  2. 数据库对sql缓存大小的问题


解决dump的办法

1、可以加上捕获异常的代码


DATA: o_cx_root TYPE REF TO cx_root.


DATA:  v_erroTYPE string.


 START-OF-SELECTION.


   TRY.


 *  modify.....


     CATCHcx_root INTO o_cx_root.


      v_erro =o_cx_root->get_text( ).


  ENDTRY.

2、最终找到这个错误的报错原因是死锁,程序里面有一条在loop循环中逐条upadte数据库表的语句,但在更新之前并未对所以的条目进行加锁,但同时多人对同一条记录操作时候可能会照成死锁。最终通过对所有条目进行加锁得以解决。


参考资料:

ST22SM12notes659946600513



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值