clickhouse_driver.errors.ServerException:代码:62.DB :: Exception:语法错误

问题描述

我的功能有误。

self.client是Click House驱动程序--- from clickhouse_driver import Client

我用键=“ 4”调用函数

def multi_get(self,keys: str) -> dict:
        if not self.initialized:
            self.make_table()
        keys_joined = "'" + "','".join(keys) + "'"
        print(f"PPPP_1 {keys_joined}") # 4
        found = self.client.execute(
            f'SELECT max(arrivalTime),key,argMax(data,arrivalTime)'
            f' FROM {self.database}.cache'
            f' WHERE key in ({keys_joined})'
            f' and arrivalTime > Now() - INTERVAL {self.expiration_interval}'
            ' GROUP BY key'
        )

并收到错误如何解决错误

receive_packet中的文件“ /home/alex/.local/lib/python3.6/site-packages/clickhouse_driver/client.py”,第118行 引发packet.exception clickhouse_driver.errors.ServerException:代码:62。 DB :: Exception:语法错误:在位置137('GROUP')处失败:GROUP BY键。预期的值之一:HOUR,DD,sql_TSI_QUARTER,S,sql_TSI_YEAR,YEAR,LIKE,

解决方法

错误消息试图告诉您。

这里:

and arrivalTime > now() - INTERVAL {self.expiration_interval}

这将生成无效的SQL。 INTERVAL需要一个单位,例如INTERVAL 1 HOUR,否则。可以找到受支持的类型的列表in the documentation

SECOND
MINUTE
HOUR
DAY
WEEK
MONTH
QUARTER
YEAR

也许你想要

and arrivalTime > now() - INTERVAL {self.expiration_interval} HOUR