程序在执行sql语句时程序控制台报错如下:
Code: 159, e.displayText() = DB::Exception: Watching task /clickhouse/task_queue/ddl/query-0000001991 is executing longer than distributed_ddl_task_timeout (=180) seconds. There are 1 unfinished hosts (0 of them are currently active), they are going to execute the query in background (version 20.3.10.75)
通过clickhouse的系统数据库的查询日志表query_log可以看到查询时间超过了系统默认时间(180s),并且显示了具体异常信息
分布式DDL查询(带有 on cluster XXX)的执行等待时间,系统默认是180s,通过查询系统设置表可以看到,changed=0表示没有被修改过,readonly=0表示可以修改
如果是阿里云的云数据库,可以通过执行以下语句修改执行等待时间
set global on cluster default distributed_ddl_task_timeout=200;
如果是本地安装的clickhouse数据库,通过在配置文件users.xml里增加下面参数即可修改
<distributed_ddl_task_timeout>200</distributed_ddl_task_timeout>