mysql数据库查询sql异常_SQL异常总结

1.resultType和resultMap写错时,启动时就会报错

c5bc98578f47c81e23e9be29c712c1c6.png

原因:

027b4c0de8e8782c7d376b40da689329.png

2.The error occurred while handling results

### SQL: select USER_ID from user_dept   where COMP_ID=?

### Cause: java.lang.UnsupportedOperationException

原因:

bd49b0f3dbae88bc3092fb2bc3e129e7.png

查询出来的是个List集合时,list元素是对象时resultType为对象(或者用resultMap),list元素为USER_ID这种时resultType用String,而不应该使用list

3.org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.binding.BindingException

: Parameter 'userIds' not found. Available parameters are [list]

78382578059b37102d7f67ef929104a7.png

4548fa42396f85563d32f4857f15cd4b.png

入参为List类型,parameterType用String,需要的结果为List ,resultType用String

4.bad SQL grammar []; nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax;

原因:

用in() 时,输入的数组或集合必须不为空,否则报错,应该在业务层进行控制,为空时不能执行这条SQL

5.

bcd4c631fc0d1bea05ccf355dfc80393.png

6.java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for com.ss.tmall.mapper.PropertyMapper.selectByPrimaryKey

原因:Mapping  xml里面没有找到对应的namespace

7.Unknown column 'XX' in 'field list'错误

在mysql中insert into语句中出现Unknown column 'XX' in 'field list'错误,一般有两种情况:

1、顾名思义,表里面没有这个列。就是所要插入的字段中所包含的XX,表格中没有这一列;

这里需要注意的是,有时候程序员粗心,可能在XX字段前面多加了个空格,空格在检查的时候不容易发现,却会使这个错误一直出现

2、要插入的数据不合符存在字段的要求,如字段类型是varchar,但是插入数据没有加''也会出现这样的错误

8.The used SELECT statements have a different number of columns

这是因为使用union的两个SQL语句产生的记录的表结构不一致. 必须是结构完全一致的记录集合才可以使用UNION.

9.Caused by: java.sql.SQLException: Incorrect string value: '\xF0\x9F\x90\xB3aa...' for column 'Content' at row 1

原因;存储表情数据失败。

解决方案:

10.Cause: java.sql.SQLException: Connection is read-only. Queries leading to data modification are not allowed

在进行修改数据库的时候出现了这个异常

很明显这个是只读引起的

是事务问题了

原因:你配置了只读事务

解决办法:看下你的service层是否配置@Transactional(readOnly=true)

在spring的配置文件中:

你是不是有类似于这样的,如果你的service方法名称是findpassword的话那么就会被拦截到了,然后就read-only了

所以改一下你的方法名称吧

或者在方法上添加注释

@Transactional(readOnly = false)

11.java从数据库查询出来的时间日期后面多了一个.0

这个.0其实代表的是纳秒。当我们数据库时间类型字段设置为datetime类型是,并且返回值用string类型接收的时候,把时间打印出来,会出现纳秒。

解决: 利用sql自带的函数在sql层转换为正常年月日时分秒。如:DATE_FORMAT(applyTime,'%Y-%m-%d %H:%i:%s')

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值