错误:无效的字符串放大请求大小1073741823(红移查询错误)



我使用datagrip作为客户端来连接红移,并遇到一个奇怪的问题,这个问题耗尽了我一整天的时间。

当我运行查询sql时,datagrip会抱怨

[XX000]错误:无效的字符串放大请求大小1073741823

似乎没有一个地方可以让我查看更详细的错误日志。我在谷歌上搜索了这个错误,它也几乎没有类似的问题,似乎是因为我的字段太长,超过了红移可以接受的最大长度。但事实上,对我来说,情况并非如此——我没有很长的字段,然后我评论我所有的sql语句,并增量地重新添加它们,以定位这个问题语句。

最后,我发现错误消息触发的语句如下:

(
case when trunc(request_date_skip_weekend_tmp) = to_date('2022-03-21', 'YYYY-MM-DD')                       
then dateadd(day, 1, trunc(request_date_skip_weekend_tmp))  
else request_date_skip_weekend_tmp end
)                                     
request_date_skip_weekend,

在我用更改后

dateadd(day, 1, trunc(request_date_skip_weekend_tmp))  request_date_skip_weekend,

错误抱怨消失了,我很难接受关系错误消息和sql更改,我不知道为什么我以前的语句会触发错误抱怨。

如果你能发现前一个表达式错误的原因,或者分享一些关于我在哪里可以获取更详细的错误消息以了解发生了什么的知识,我将不胜感激。

您的代码片段是日期和时间戳,但错误是字符串。因此,很可能您已经确定了一个";触发器";而不是根本原因。此外,由于您报告SQL很长,您可能正在处理编译器优化更改,从而转移故障。删除CASE可能会导致编译器/优化器为查询选择不同的结构。

尝试的一个实验是将to_date((更改为强制转换为时间戳,这样就没有隐式强制转换("2022-03-21"::timestamp(。这不太可能是原因,但可能会有所帮助。

我希望您需要发布查询以获得更多帮助。它有多大?此错误可能与在查询中生成大字符串有关,或者可能与创建输出的查询文本有关。这不是一个标准的";字符串太长";信息,所以这是更隐含的东西。你可以发布到谷歌文档或其他文件共享服务。只是问题中的链接。

最新更新