Invalid bound statement (not found):的原因和解决方法


在常见数据库异常中这算是比较简单的一类了,细致一点就能很好的避免此类问题,以下是我总结出容易出错的地方,欢迎补充。

  1. 检查Mapper.xml中的方法名和Dao类方法是否一致,若使用注解则检查SQL语句是否存在

  2. 检查Mapper.xml文件中的namespace是否是正确的Dao类全限定名

  3. 检查Mapper.xml文件中方法返回值和Dao类的方法返回值是否一致,ResultMap要注意type是否正确,ResultType要注意是返回结果的一条记录的类型

  4. 检查Mapper.xml在配置文件或者配置类中的路径是否正确

  5. 前四点只能算是常规,最后这一点简直神来之笔,如果以上方法都无法解决问题,请修改对应的Mapper.xml文件,添加或删除一个空格(有朋友发现删除其中语句的分号也能解决,我认为和空格的解决方法如出一辙)

  6. 如果你用第五点解决了问题,恭喜你解决了一个问题。但是具体原因如何呢?我这里遇到一个真实场景以供参考,也是因此我才会有关于这个异常的方法总结:我的项目是是用svn管理,我外地的同事由于某些原因无法使用svn,就要我把代码复制了一份,用压缩包的方式发送给了他,他那边解压后导入项目到IDEA,运行没问题,访问的时候首页报500,其中的与数据库相关的定时任务开始报这个错Invalid bound statement (not found),就让我远程帮他解决,然后我依照第四点给对应Mapper.xml添加了空格,包括报500的首页html文件。然后运行无碍,但是登陆又不行了,又报Invalid bound statement (not found),又打空格,emmmm,n次循环,体力和耐力跟不上了,文件肯定出问题了,正愁眉不展的时候发现鼠标停留的代码出现了提示,read_only!!!文件权限!!!最后的解决办法:修复了svn,重新checkout,从此再无bug。猜测空格的方法就是由于某些原因导致Mapper.xml的权限出错,加空格后文件才能够正常读取。

空格的方法来自于这位专家的博客,感谢大佬,点击查看大佬原文

喜欢的话可以点点关注,或者添加小编微信 Chase

你可能感兴趣的:(数据库)