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

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

pe

Storage

Minimum Value

Maximum Value

存储大小

(Bytes)

(Signed/Unsigned)

(Signed/Unsigned)

byte

TINYINT

1

-128

127

1 byte

0

255

SMALLINT

2

-32768

32767

2 bytes

0

65535

MEDIUMINT

3

-8388608

8388607

3 bytes

0

16777215

INT

4

-2147483648

2147483647

4 bytes

0

4294967295

BIGINT

8

-9223372036854775808

9223372036854775807

8 bytes

0

18446744073709551615

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

复制代码 代码如下:

SELECT CAST(0 AS UNSIGNED) - 1;

SELECT 9223372036854775807 + 1;

MySQL 5.1 下:

复制代码 代码如下:

mysql> SELECT CAST(0 AS UNSIGNED) - 1;

+-------------------------+

| CAST(0 AS UNSIGNED) - 1 |

+-------------------------+

|    18446744073709551615 |

+-------------------------+

1 row in set (0.01 sec)

mysql> SELECT 9223372036854775807 + 1;

+-------------------------+

| 9223372036854775807 + 1 |

+-------------------------+

|    -9223372036854775808 |

+-------------------------+

1 row in set (0.01 sec)

MySQL 5.5, 5.6, 5.7下:

复制代码 代码如下:

mysql> SELECT CAST(0 AS UNSIGNED) - 1;

ERROR 1690 (22003): BIGINT UNSIGNED value is out of range in '(cast(0 as unsigned) - 1)'

mysql>

mysql>

mysql>

mysql> SELECT 9223372036854775807 + 1;

ERROR 1690 (22003): BIGINT value is out of range in '(9223372036854775807 + 1)'

所在处理这类数据是一定要小心溢出(如早期有做弊冲Q币就是利用这个方法处理)

这个问题有可能会出现积分消息,积分相加, 或是一些钱相关的业务中出现, 主库5.1 ,从库MySQL 5.5情况也会出现不同步的问题。

建议:这类业务系统尽可能的升级到MySQL 5.5后版本

时间: 2014-07-19

mysql整形溢出报错_MySQL整型数据溢出的解决方法相关推荐

  1. MySQL ALTER TABLE报错Duplicate entry 'xxx' for key 'PRIMARY'解决方法

    在MySQL中执行加字段等操作时可能会报Duplicate entry 'xxx' for key 'PRIMARY'的错,例如: mysql> alter table test add aa ...

  2. mysql 报错 get error 28 from storage engine 解决方法

    mysql 报错 get error 28 from storage engine 解决方法 参考文章: (1)mysql 报错 get error 28 from storage engine 解决 ...

  3. mysql命令行显示乱码_mysql命令行显示乱码的解决方法

    我就废话不多说了,大家还是直接看代码吧~create or replace function aa1(a1 integer[],a2 bigint) returns void AS $$declare ...

  4. unknown error mysql_mysql执行sql文件报错Error: Unknown storage engine‘InnoDB’的解决方法...

    发现问题 最近在工作中遇到一个问题,在运行了一个innoDB类型的sql文件,报了Error: Unknown storage engine 'InnoDB'错误,网上查了很多方法,但是都没办法真正解 ...

  5. 图形界面报错“已拒绝X11转移申请”的解决方法

    图形界面报错"已拒绝X11转移申请"的解决方法 参考文章: (1)图形界面报错"已拒绝X11转移申请"的解决方法 (2)https://www.cnblogs. ...

  6. vue启动项目报错:npm ERR! missing script: serve解决方法

    vue启动项目报错:npm ERR! missing script: serve解决方法 1.vue启动项目报错:npm ERR! missing script: serve 问题原因: 在配置文件中 ...

  7. 【curl】【php】curl报错,错误代码77,CURLE_SSL_CACERT_BADFILE (77)解决方法

    [curl][php]curl报错,错误代码77,CURLE_SSL_CACERT_BADFILE (77)解决方法 参考文章: (1)[curl][php]curl报错,错误代码77,CURLE_S ...

  8. MyEclipse 启动报错:‘Building workspace‘ has encountered a problem解决方法

    MyEclipse 启动报错:'Building workspace' has encountered a problem解决方法 参考文章: (1)MyEclipse 启动报错:'Building ...

  9. nginx 启动报错 “/var/run/nginx/nginx.pid“ failed” 解决方法

    nginx 启动报错 "/var/run/nginx/nginx.pid" failed" 解决方法 参考文章: (1)nginx 启动报错 "/var/run ...

最新文章

  1. 深度学习 英文 训练阶段_半监督深度学习训练和实现小Tricks
  2. 全球及中国汽车维修行业发展战略规划及投资策略建议报告2021-2027年
  3. uml和模式应用 pdf_「企业架构」架构知识库应用简介
  4. PHP动态白云为背景的引导页-个人主页源码
  5. Dell Chromebook11 刷Ubuntu
  6. 2019-2020大一下学期总结和暑假安排
  7. L1-029. 是不是太胖了-PAT团体程序设计天梯赛GPLT
  8. centos最小化安装后部署中文输入法
  9. pycharm的下载,安装及首次启动
  10. javaScript,Dwr分页模拟
  11. Cadence学习之路:寻找优秀的封装资源以及3D封装设置
  12. ios 网速监控_iOS怎么实时显示当前的网速
  13. 动态规划——详细入门讲解
  14. 内存管理基本原理及非ARC环境使用小心得
  15. pikachu漏洞练习平台XSS
  16. 分布式路由策略(Hash取余,一致性Hash,Hash槽)
  17. Python 练习实例100-39,有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
  18. 2022年最新前端面试题、高频面试题、面试题总结
  19. 【NAACL 2021】RCI:在基于 Transformer 的表格问答中行和列语义捕获
  20. Python编程快速上手 让繁琐工作自动化 豆瓣评分[9.00]

热门文章

  1. 植树月收尾:合种油松/华山松/云杉/胡杨
  2. Nature子刊:干旱条件下土壤细菌网络的稳定性不如真菌网络
  3. 宏基因组分析技术研讨会-2019年最后一期
  4. Nature:拟南芥微生物组功能研究3人工重组微生物群落
  5. linux 类型排序,Linux命令之排序命令sort使用实例
  6. R语言可视化dataframe数据、并自定义设置坐标轴各个标签使用不同的色彩
  7. R语言ggplot2可视化:可视化堆叠的直方图、在bin中的每个分组部分添加数值标签、使用position_stack函数设置
  8. python使用matplotlib可视化subplots绘制子图、自定义几行几列子图,如果M行N列,那么最终包含M*N个子图、在指定的子图中添加可视化结果
  9. R语言ggplot2可视化:为图像中的均值竖线、中位数竖线、 geom_vline添加图例(legend)
  10. python使用fpdf生成pdf章节(chapter)文件包含:页眉、页脚、章节主体、章节内容等;