clickhouse_driver.errors.ServerException:代码:62.DB::Exception:语法错误
Posted
技术标签:
【中文标题】clickhouse_driver.errors.ServerException:代码:62.DB::Exception:语法错误【英文标题】:clickhouse_driver.errors.ServerException: Code: 62.DB::Exception: Syntax error 【发布时间】:2020-10-13 20:02:13 【问题描述】:我的函数有错误。
self.client
是click house驱动---from clickhouse_driver import Client
我用 keys = "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'
)
并收到错误。 我该如何解决这个错误?
文件“/home/alex/.local/lib/python3.6/site-packages/clickhouse_driver/client.py”,第 118 行,在 receive_packet 引发数据包异常 clickhouse_driver.errors.ServerException:代码:62。 DB::Exception: 语法错误:在位置 137 ('GROUP') 失败:GROUP BY 键。应为以下之一:HOUR、DD、SQL_TSI_QUARTER、S、SQL_TSI_YEAR、YEAR、LIKE,
【问题讨论】:
【参考方案1】:错误信息试图告诉你。
这里:
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
【讨论】:
以上是关于clickhouse_driver.errors.ServerException:代码:62.DB::Exception:语法错误的主要内容,如果未能解决你的问题,请参考以下文章