記錄一次因爲mysql TINYINT類型設置過小導致的問題


今天突然收到郵件,生產環境出問題了,趕緊放下手頭的工作進行問題排查。
出現問題的系統,是公司內部的財務系統,這出現問題可不是鬧着玩的,趕緊進行排查。

問題描述

在這個財務系統中,涉及到公司幾個分公司的財務狀況,在系統中,標識公司採用的是位二進制(ID)進行存儲,前段時間新增了一個新的公司(ID=128),在配置表中進行了相關字段的配置,測試後沒啥問題,發到了生產環境,時隔兩天收到bug郵件。

問題分析

經過一段時間分析,最後找主管看下生產環境數據庫的字段類型,發現,在一個業務表中設置的來源公司的字段是tinyint(2),才發現是因爲新公司的ID=128在寫入這個表中的時候變成了127,導致生產環境出現問題。

問題解決

在mysql數據庫中,int類型(包含其子類)的長度代表相應的字節數,比如(int 2) 表示 0-2的8次方減一,因此範圍是0-127,在存入128時導致數據溢出,自動存儲爲了127,改下生產環境字段長度,問題得到解決。


作者:洋灰
原文鏈接:http://www.jianzhi12.com/2018/10/mysql-2/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章