cassandra - 在准备好的查询中,什么会导致“java.lang.IndexOutOfBoundsException:索引:1,大小:1”?
问题描述
这是在 Cassandra 3.11.4 中。
我正在运行以前在我的应用程序中运行良好的查询的修改版本。原来的查询很好:
SELECT SerializedRecord FROM SxRecord WHERE Mark=?
我修改了查询以具有一个时间戳范围(我还为其添加了一个索引,尽管我认为这不相关):
SELECT SerializedRecord FROM SxRecord WHERE Mark=? AND Timestamp>=? AND Timestamp<=?
这导致:
ResponseError {reHost = datacenter1:rack1:127.0.0.1:9042, reTrace = Nothing, reWarn = [], reCause = ServerError "java.lang.IndexOutOfBoundsException: Index: 1, Size: 1"}
发生这种情况时,我看不到正在登录的查询 CQL system_traces.sessions
,这很有趣,因为如果我将语法错误放入查询中,它仍然会记录在那里。
此外,当我在 cqlsh 中运行(据我所知,相同的,直到时间戳)查询时,似乎没有问题:
cqlsh> SELECT SerializedRecord FROM test_fds.SxRecord WHERE Mark=8391 AND Timestamp >= '2021-03-06 00:00:00.000+0000' AND Timestamp <= '2021-03-09 00:00:00.000+0000';
serializedrecord
------------------
这将导致以下查询跟踪:
cqlsh> select parameters from system_traces.sessions;
parameters
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
{'consistency_level': 'ONE', 'page_size': '100', 'query': 'SELECT SerializedRecord FROM test_fds.SxRecord WHERE Mark=8391 AND Timestamp >= ''2021-03-06 00:00:00.000+0000'' AND Timestamp <= ''2021-03-09 00:00:00.000+0000'';', 'serial_consistency_level': 'SERIAL'}
null
解决方案
似乎在准备好的/绑定语句中执行的查询没有收到所有需要的参数或太多(以前代码中绑定的东西)
您没有看到跟踪的查询的事实来自驱动程序甚至不执行查询,因为它具有未绑定的参数
推荐阅读
- java - Spring Boot - 出现意外错误(类型=内部服务器错误,状态=500)
- terraform - terraform rpc 错误:代码 = 未实现的 desc = 未知服务 proto.Provider
- javascript - CSS 文本样式 - 使用数字 1 和 0 的动画填充文本 - HTML
- angular - 使用 v2 API 从 SPA 与 DialogFlow 通信
- kubernetes - 通过 helm 在 Digitalocean 单节点集群上安装 Traefik 仪表板/Web UI 404
- python - Django For循环不输出任何东西
- oracle - 如何编写 Oracle SQL 根据值重置计数器?
- css - css3 转换:切换 css 类不会转换顶部/左侧/底部/右侧(由于添加了 :before 或 :after 元素)
- r - R-如何绘制多个叠加图/散点图?
- c++ - 如何在 C++ 中将值放入由 VirtualAlloc 分配的内存中?