MySQL整型数据溢出的解决方法

今天接到一个朋友电话说是觉的数据库被别人更改了,出现数据不对的问题 。经过很久的排查是数据类型溢出了(发生问题的版本是MySQL 5.1)。后来通过给朋友那边把MySQL 5.1升级到MySQL 5.5去解决这个问题。 这也让我有兴趣去了解一下MySQL不同版本数据类型溢出的处理机制。

先看一下MySQL支持的整型数及大小,存储空间:

peStorageMinimum ValueMaximum Value存储大小
 (Bytes)(Signed/Unsigned)(Signed/Unsigned)byte
TINYINT1-1281271 byte
  0255 
SMALLINT2-32768327672 bytes
  065535 
MEDIUMINT3-838860883886073 bytes
  016777215 
INT4-214748364821474836474 bytes
  04294967295 
BIGINT8-922337203685477580892233720368547758078 bytes
  018446744073709551615 

另外请记着mysql的数据处理会转成bigint处理,所以这里就用bigint几个测试:

SELECT CAST(0 AS UNSIGNED) - 1;

SELECT 9223372036854775807 + 1;

以上是 MySQL整型数据溢出的解决方法 的全部内容, 来源链接: utcz.com/z/321199.html

回到顶部