项目简介
最近公司mysql有个表数据量3000多W决定分表,用sharding-jdbc插件做分表,根据字段taskId做分片路由。
问题现象
where中带有分片键的查询没有问题,对于没有的带分片键的查询会报错
Cause: java.lang.ClassCastException: java.lang.Boolean cannot be cast to java.lang.Integer
并且查询有的数据报错,有的数据不报错。
原因
是由于mysql中的 tinyint(1) 类型的字段mysql默认当作boolean型处理在转成int时出错,将 tinyint(1) 改为int(1) 或者 tinyint(2) 后不再报错。
或者jdbc加上:tinyInt1isBit=false
疑惑
不知道为什么 带有分片键的sql 就不会有这个问题?
路过的大神可以一起讨论下。
网友评论