mysql整形溢出报错_MySQL整型数据溢出的解决方法
今天接到一个朋友电话说是觉的数据库被别人更改了,出现数据不对的问题 。经过很久的排查是数据类型溢出了(发生问题的版本是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整型数据溢出的解决方法相关推荐
- MySQL ALTER TABLE报错Duplicate entry 'xxx' for key 'PRIMARY'解决方法
在MySQL中执行加字段等操作时可能会报Duplicate entry 'xxx' for key 'PRIMARY'的错,例如: mysql> alter table test add aa ...
- mysql 报错 get error 28 from storage engine 解决方法
mysql 报错 get error 28 from storage engine 解决方法 参考文章: (1)mysql 报错 get error 28 from storage engine 解决 ...
- mysql命令行显示乱码_mysql命令行显示乱码的解决方法
我就废话不多说了,大家还是直接看代码吧~create or replace function aa1(a1 integer[],a2 bigint) returns void AS $$declare ...
- unknown error mysql_mysql执行sql文件报错Error: Unknown storage engine‘InnoDB’的解决方法...
发现问题 最近在工作中遇到一个问题,在运行了一个innoDB类型的sql文件,报了Error: Unknown storage engine 'InnoDB'错误,网上查了很多方法,但是都没办法真正解 ...
- 图形界面报错“已拒绝X11转移申请”的解决方法
图形界面报错"已拒绝X11转移申请"的解决方法 参考文章: (1)图形界面报错"已拒绝X11转移申请"的解决方法 (2)https://www.cnblogs. ...
- vue启动项目报错:npm ERR! missing script: serve解决方法
vue启动项目报错:npm ERR! missing script: serve解决方法 1.vue启动项目报错:npm ERR! missing script: serve 问题原因: 在配置文件中 ...
- 【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 ...
- MyEclipse 启动报错:‘Building workspace‘ has encountered a problem解决方法
MyEclipse 启动报错:'Building workspace' has encountered a problem解决方法 参考文章: (1)MyEclipse 启动报错:'Building ...
- nginx 启动报错 “/var/run/nginx/nginx.pid“ failed” 解决方法
nginx 启动报错 "/var/run/nginx/nginx.pid" failed" 解决方法 参考文章: (1)nginx 启动报错 "/var/run ...
最新文章
- 深度学习 英文 训练阶段_半监督深度学习训练和实现小Tricks
- 全球及中国汽车维修行业发展战略规划及投资策略建议报告2021-2027年
- uml和模式应用 pdf_「企业架构」架构知识库应用简介
- PHP动态白云为背景的引导页-个人主页源码
- Dell Chromebook11 刷Ubuntu
- 2019-2020大一下学期总结和暑假安排
- L1-029. 是不是太胖了-PAT团体程序设计天梯赛GPLT
- centos最小化安装后部署中文输入法
- pycharm的下载,安装及首次启动
- javaScript,Dwr分页模拟
- Cadence学习之路:寻找优秀的封装资源以及3D封装设置
- ios 网速监控_iOS怎么实时显示当前的网速
- 动态规划——详细入门讲解
- 内存管理基本原理及非ARC环境使用小心得
- pikachu漏洞练习平台XSS
- 分布式路由策略(Hash取余,一致性Hash,Hash槽)
- Python 练习实例100-39,有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
- 2022年最新前端面试题、高频面试题、面试题总结
- 【NAACL 2021】RCI:在基于 Transformer 的表格问答中行和列语义捕获
- Python编程快速上手 让繁琐工作自动化 豆瓣评分[9.00]
热门文章
- 植树月收尾:合种油松/华山松/云杉/胡杨
- Nature子刊:干旱条件下土壤细菌网络的稳定性不如真菌网络
- 宏基因组分析技术研讨会-2019年最后一期
- Nature:拟南芥微生物组功能研究3人工重组微生物群落
- linux 类型排序,Linux命令之排序命令sort使用实例
- R语言可视化dataframe数据、并自定义设置坐标轴各个标签使用不同的色彩
- R语言ggplot2可视化:可视化堆叠的直方图、在bin中的每个分组部分添加数值标签、使用position_stack函数设置
- python使用matplotlib可视化subplots绘制子图、自定义几行几列子图,如果M行N列,那么最终包含M*N个子图、在指定的子图中添加可视化结果
- R语言ggplot2可视化:为图像中的均值竖线、中位数竖线、 geom_vline添加图例(legend)
- python使用fpdf生成pdf章节(chapter)文件包含:页眉、页脚、章节主体、章节内容等;