mycat取tinyint值异常

mycat取tinyint值异常

   运维菜鸟     2020年7月16日 04:27     2446    

1、错误描述

使用mycat配置了mysql的读写分离,使用php在取值的时候本来字段的值为1,但是却取出了49这个值,数据库这个字段的类型是tinyint。所以导致了网页加载错误。

直接用sql查询是1,

1.png

但是用php去取值为49

2.png

 

2、问题原因

因为mycat使用的mysql的驱动是jdbc,所以这里就会出现tinyint转换的问题。

JAVA数据类型和MYSQL的数据类型转换,一定要注意tinyInt 类型,且存储长度为1的情况。

MySQL Types to Java Types for ResultSet.getObject(),下边是mysql官方给出的提示

3.png

java 获取mysql中tinyint型的数值,获取到的0是false 1或者大于1的所有都变成了true,所以在取值的时候会出现问题。

(1)JDBC的URL增加 ?tinyInt1isBit=false参数,注意参数名区分大小写,否则不生效。

(2)或者在使用tinyInt类型时不要让tinyInt类型的长度为1。

 

3、解决问题

只要jdbc链接后边加上 ?tinyInt1isBit=false参数。

例如下边这样。

jdbc:mysql://192.168.0.222:3306?tinyInt1isBit=false即可。



文章评论

0

其他文章