mybaits demo
原因表现特征解决办法解决过程总结原因
mybaits demo 原因mybaits 的demo使用H2数据库,并且使用脚本在spring 启动时创建 table,插入数据,然后再在测试类里查找数据。这时候测试不通过报错提示 “Table “USER” not found”,可能的原因——创建数据库的脚本没有执行。
表现特征测试提示 :Error querying database. Cause: org.h2.jdbc.JdbcSQLSyntaxErrorException: Table “USERD” not found (this database is empty); SQL statement:
在YML文件中加入这一项配置(spring2.x以上,其他版本自行搜索),确保脚本文件执行。
我先写解决方法方便大家,再写探究过程为了自己记录。
- 首先检查数据库创建脚本是否能够运行,复制到H2的网页版控制台里去运行,发现官方demo给的sql语句居然无法运行,会提示存在错误符号,可能是网页上复制过来的多了些什么看不到的东西。(未起效)检查SQL及其对应pojo的大小写问题(未起效)考虑H2数据库的存续性 参照 参考链接1 (未起效)我再仔细看了一下报错位置提示,是在测试类query 查询的时候出错,于是我思考,建表脚本如果非正常执行,在插入数据的时候就应该提示错误才对。所以运行可以分为2段,1.脚本执行,2.测试查询,所以要么是脚本执行出错,要么是测试类查询代码有误。再回到抛出的异常,JdbcSQLSyntaxErrorException,指的是sql语法错误,即Mapper所用方法背后的sql运行错误。这里可以判断非方法本身错误,因为已经执行到sql了。所以可以确定是脚本执行出错。首先想到脚本是否运行,经过查询得到 mode 配置(生效)
由于yml配置是官方demo里直接给出的,所以没有想到脚本文件配置路径后还需要确认运行。不能认为官方demo给出的配置是完全有效的。
参考文章:
Springboot 配置H2数据库
脚本文件执行
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)