今天遇见一个诡异的现象,
我的一个表中的一个字段之前是bit类型,后来发现不够用,就改成tinyint了,然后我的某个业务逻辑将这个字段的某条数据的值改成了2,用Navicat看数据库中确实也变更成2了,但是当我用ADO.Net读取mysql的数据将该字段读取的数值转成byte时,发现本该是2的值却都是1,代码没问题,Navicat看表中的数据确实是2也没有问题,但是就是读取的数据有问题,简直是活见鬼了,后来逐步调试,我将该字段的值直接输出成了字符串,发现本该为2的输出的确实True。。。真是奇怪了,mysql我明明改成tinyint了啊,为什么还是True,后来我发现,mysql中该列的tinyint的长度是1,而别的tinyint则是4,这可能是之前从bit改成tinyint的时候我没有一起更改,我就将长度1改成了4,结果就正常了,我记得mysql中数字类型的长度应该是数字的位数,当值为2时,长度是1还是4应该没影响吧,为什么从bit改的tinyint的长度为1就不能读取正常的值,而改成4就正常了啊
tinyint 1 当bool 处理的