今天突然收到郵件,生產環境出問題了,趕緊放下手頭的工作進行問題排查。
出現問題的系統,是公司內部的財務系統,這出現問題可不是鬧着玩的,趕緊進行排查。
問題描述
在這個財務系統中,涉及到公司幾個分公司的財務狀況,在系統中,標識公司採用的是位二進制(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/