python - clickhouse_driver.errors.ServerException: Code: 62.DB::Exception: Syntax error
问题描述
I have an error in function.
self.client
is click house driver --- from clickhouse_driver import Client
I called function with 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'
)
And received error. How can I fix the error?
File "/home/alex/.local/lib/python3.6/site-packages/clickhouse_driver/client.py", line 118, in receive_packet raise packet.exception clickhouse_driver.errors.ServerException: Code: 62. DB::Exception: Syntax error: failed at position 137 ('GROUP'): GROUP BY key. Expected one of: HOUR, DD, SQL_TSI_QUARTER, S, SQL_TSI_YEAR, YEAR, LIKE,
解决方案
错误信息试图告诉你。
这里:
and arrivalTime > now() - INTERVAL {self.expiration_interval}
这会生成无效的 SQL。INTERVAL
需要一个单位,例如,INTERVAL 1 HOUR
否则。支持的类型列表可以在文档中找到:
SECOND MINUTE HOUR DAY WEEK MONTH QUARTER YEAR
也许你想要:
and arrivalTime > now() - INTERVAL {self.expiration_interval} HOUR
推荐阅读
- push-notification - 在请求和客户端之间发送推送通知时,浏览器使用什么推送服务?
- amazon-web-services - 如何将 YAML 文件作为输出工件从 Lambda 返回到 CodePipeline
- python - 我正在尝试在 Windows 中安装 psycopg2 并出现错误
- sql-server - SQL Server 十进制运算不准确
- c++ - std::move 在 return 语句的子表达式中
- axapta - 在 AX365 中将文本复制到剪贴板
- sql - 在 SQL 中选择初始值
- spring - JpaRepository 通过 manyToMany 属性查找
- reactjs - 面包屑和 NextJS
- c# - 从 .txt 文件向 Sql 数据库添加值,跳过第一行