文档首页/ 数据仓库服务 GaussDB(DWS)/ 故障排除/ 数据库参数修改/ SQL语句执行失败,报错:canceling statement due to statement timeout
更新时间:2024-07-01 GMT+08:00

SQL语句执行失败,报错:canceling statement due to statement timeout

问题现象

某SQL语句执行超过两小时,返回如下报错信息:

1
ERROR: canceling statement due to statement timeoutTime.

原因分析

当语句执行时间超过statement_timeout参数设置的时间时,该语句将会报错并退出执行。

处理方法

方式一:通过控制台修改statement_timeout参数。

  1. 登录GaussDB(DWS)管理控制台。
  2. 在左侧导航栏中,单击“集群管理”。
  3. 在集群列表中找到所需要的集群,单击集群名称,进入集群“基本信息”页面。
  4. 单击“参数修改”页签,根据需要修改参数“statement_timeout”默认值,然后单击“保存”。

    GaussDB(DWS)默认不限制SQL超时,即statement_timeout默认值为0。如用户手动修改过该参数,建议恢复原默认值0,或者根据需要调整SQL超时时间,避免设置的SQL超时时间对其它任务产生影响。

  5. 在“修改预览”窗口,确认修改无误后,单击“保存”。
  6. 参数“statement_timeout”所在行“是否重启”列显示为“否”,表示该参数修改后无需进行重启操作,即修改后立即生效。

    图1 修改参数statement_timeout

方式二:成功连接集群后,通过SQL命令修改statement_timeout参数。
  • 使用SET语句修改(会话级别):
    1
    SET statement_timeout TO 0;
    
  • 使用ALTER ROLE语句修改(用户级别):
    1
    ALTER USER username SET statement_timeout TO 600000;
    

    其中,username为要设置SQL语句超时时间的数据库用户名。