Parameter index of 21 is out of range (1, 18); nested exception is java.sql.SQLException: Parameter index of 21 is out of range (1, 18)
时间: 2023-11-07 22:52:15 浏览: 156
报错信息"Parameter index of 21 is out of range (1, 18); nested exception is java.sql.SQLException: Parameter index of 21 is out of range (1, 18)"意味着你在设置参数时使用了21作为索引,但是只有18个参数可用。这可能是因为你的SQL语句中只有18个问号(参数占位符),但你却尝试给第21个参数赋值。这会导致参数越界异常。
通常,这种错误发生的原因是在设置参数时没有正确地匹配问号的数量和要插入的值的数量。你需要检查你的SQL语句中的问号数量,并确保你提供的参数与问号一一对应。
相关问题
Request processing failed; nested exception is org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.type.TypeException: Could not set parameters for mapping: ParameterMapping{property='userName', mode=IN, javaType=class java.lang.String, jdbcType=null, numericScale=null, resultMapId='null', jdbcTypeName='null', expression='null'}. Cause: org.apache.ibatis.type.TypeException: Error setting non null for parameter #1 with JdbcType null . Try setting a different JdbcType for this parameter or a different configuration property. Cause: java.sql.SQLException: Parameter index out of range (1 > number of parameters, which is 0).
这个看起来像是一个异常错误,错误信息中提到了MyBatis和JdbcType,可能是在使用MyBatis进行数据库操作时出现了问题。具体的原因可能需要查看代码和配置,以及数据库中的参数设置情况。建议检查一下相关的配置和代码是否正确,是否有遗漏或错误的地方。同时,也可以参考错误信息中的提示,尝试使用不同的JdbcType或者配置属性来解决问题。
Request processing failed; nested exception is org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.type.TypeException: Could not set parameters for mapping: ParameterMapping{property='userName', mode=IN, javaType=class java.lang.String, jdbcType=null, numericScale=null, resultMapId='null', jdbcTypeName='null', expression='null'}. Cause: org.apache.ibatis.type.TypeException: Error setting non null for parameter #1 with JdbcType null . Try setting a different JdbcType for this parameter or a different configuration property. Cause: java.sql.SQLException: Parameter index out of range (1 > number of parameters, which is 0).怎么解决
这个错误提示中提到了两个问题,分别是JdbcType为null和参数索引超出范围。解决方法如下:
1. 设置JdbcType:根据错误提示,可以尝试设置不同的JdbcType,以解决JdbcType为null的问题。例如,如果参数是一个字符串类型的参数,可以设置JdbcType为VARCHAR。
2. 检查参数索引:错误提示中还提到了参数索引超出范围的问题,这可能是由于在SQL语句中指定了参数,但实际传递的参数数量与SQL语句中的参数数量不匹配导致的。所以,需要仔细检查SQL语句和传递的参数,确保它们的数量和顺序是一致的。
如果上述方法都无法解决问题,还可以检查一下MyBatis和数据库连接的配置是否正确,以及是否有其他错误导致了这个异常。
阅读全文