SQL语句执行失败,报错:canceling statement due to statement timeout
问题现象
某SQL语句执行超过两小时,返回如下报错信息:
1
|
ERROR: canceling statement due to statement timeoutTime. |
原因分析
当语句执行时间超过statement_timeout参数设置的时间时,该语句将会报错并退出执行。
处理方法
方式一:通过控制台修改statement_timeout参数。
- 登录GaussDB(DWS)管理控制台。
- 在左侧导航栏中,单击“集群管理”。
- 在集群列表中找到所需要的集群,单击集群名称,进入集群“基本信息”页面。
- 单击“参数修改”页签,根据需要修改参数“statement_timeout”默认值,然后单击“保存”。
GaussDB(DWS)默认不限制SQL超时,即statement_timeout默认值为0。如用户手动修改过该参数,建议恢复原默认值0,或者根据需要调整SQL超时时间,避免设置的SQL超时时间对其它任务产生影响。
- 在“修改预览”窗口,确认修改无误后,单击“保存”。
- 参数“statement_timeout”所在行“是否重启”列显示为“否”,表示该参数修改后无需进行重启操作,即修改后立即生效。
图1 修改参数statement_timeout
- 使用SET语句修改(会话级别):
1
SET statement_timeout TO 0;
- 使用ALTER ROLE语句修改(用户级别):
1
ALTER USER username SET statement_timeout TO 600000;
其中,username为要设置SQL语句超时时间的数据库用户名。