MySql 因mysql TINYINT类型设置过小导致的问题


今天突然收到邮件,生产环境出问题了,赶紧放下手头的工作进行问题排查。
出现问题的系统,是公司内部的财务系统,这出现问题可不是闹着玩的,赶紧进行排查。

问题描述

在这个财务系统中,涉及到公司几个分公司的财务状况,在系统中,标识公司采用的是位二进制(ID)进行存储,前段时间新增了一个新的公司(ID=128),在配置表中进行了相关字段的配置,测试后没啥问题,发到了生产环境,时隔两天收到bug邮件。

问题分析

经过一段时间分析,最后找主管看下生产环境数据库的字段类型,发现,在一个业务表中设置的来源公司的字段是tinyint(2),才发现是因为新公司的ID=128在写入这个表中的时候变成了127,导致生产环境出现问题。

问题解决

在mysql数据库中,int类型(包含其子类)的长度代表相应的字节数,比如(int 2) 表示 0-2的8次方减一,因此范围是0-127,在存入128时导致数据溢出,自动存储为了127,改下生产环境字段长度,问题得到解决。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值