【发布时间】:2016-07-26 22:36:22
【问题描述】:
SnappyData v.0-5 w/ ClientDriver JDBC 驱动程序。
我在 SnappyData 中有一个名为:sensor_data 的持久行表。
在 snappy> shell 中,此查询返回数千行。
snappy> select * from sensor_data where year_num = 2013 and month_num = 1;
在 SpringBoot 中从 JDBC 连接运行时,出现此错误:
PreparedStatementCallback; SQL 的未分类 SQLException [选择 * 来自 sensor_data where year_num = ?和month_num = ?]; SQL 状态 [XCL14];错误代码[20000]; (SQLState=XCL14 严重性=20000) 列位置“1”超出范围。这个的列数 结果集为“0”。
Java 代码是:
List<SensorData> list = jdbcTemplateBean.query("select * from sensor_data where year_num = ? and month_num = ?",
new Object[] {year, month}, new SensorDataRowMapper());
我需要做什么来解决这个 JDBC 问题?
在 Spring 启动时修剪 Stacktrace:
org.springframework.jdbc.UncategorizedSQLException: PreparedStatementCallback; SQL 的未分类 SQLException [选择 * 来自 sensor_data where year_num = ?和month_num = ?]; SQL 状态 [XCL14];错误代码[20000]; (SQLState=XCL14 严重性=20000) 列位置“1”超出范围。这个的列数 结果集是'0'。;嵌套异常是 java.sql.SQLException: (SQLState=XCL14 Severity=20000) 列位置 '1' 超出 范围。此 ResultSet 的列数为“0”。在 org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:84) 在 org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:81) 在 org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:81) 在 org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:645) 在 org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:680) 在 org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:707) 在 org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:757) 在 org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate.query(NamedParameterJdbcTemplate.java:192) 在 org.kritek.scalability.repository.SensorDataRepository.findByYearAndMonth(SensorDataRepository.java:58) ... 在 org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555) 在 java.lang.Thread.run(Thread.java:745) 引起: java.sql.SQLException: (SQLState=XCL14 Severity=20000) 列 位置“1”超出范围。这个的列数 结果集为“0”。 ... 原因:ERROR XCL14:列位置“1”不在 范围。此 ResultSet 的列数为“0”。在 com.pivotal.gemfirexd.internal.client.am.ColumnMetaData.checkForValidColumnIndex(ColumnMetaData.java:856) 在 com.pivotal.gemfirexd.internal.client.am.ColumnMetaData.getColumnType(ColumnMetaData.java:638) ... 72 更多
【问题讨论】:
-
能否请您从 snappydata 服务器日志文件中添加异常堆栈跟踪?
-
服务器上发生的日志记录为零。它没有通过 ClientDriver。 ClientDriver 似乎不喜欢参数化的 PreparedStatements(例如?)。我把这两个参数取出来,把年月硬编码,然后它执行 SQL 到 snappy 服务器。
标签: snappydata