加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 有没有办法检测mysql中的溢出?

发布时间:2020-12-13 21:50:54 所属栏目:PHP教程 来源:网络整理
导读:经过一段时间试图杀死这个bug,我直接测试了sql查询: UPDATE noticias SET data_destaque_ini='2013-12-03',data_destaque_fim='',fotoDestaque_x=-3,fotoDestaque_y=-102,fotoDestaque_escala=154,destacar=1WHERE idNoticia=3 但fotoDestaque_escala保持与
经过一段时间试图杀死这个bug,我直接测试了sql查询:

UPDATE noticias SET
    data_destaque_ini='2013-12-03',data_destaque_fim='',fotoDestaque_x=-3,fotoDestaque_y=-102,fotoDestaque_escala=154,destacar=1
WHERE idNoticia=3

但fotoDestaque_escala保持与以前相同的值:127.嗯,这是一个“圆”数,对吗?因此,即使没有任何sql错误消息,我打开了结构,就是这样:列设置为TINYINT(-127到127),并将其更改为SMALLINT解决了问题.

但是考虑到未来,我对MySQL的这种行为感到震惊:我为这个专栏传递了太大的价值,MySQL保存了可能的东西,削减了其余部分,并且没有说出任何关于 – 客户端仍处于黑暗状态!

那么,有没有办法以某种方式配置或检测溢出?如果没有,我正在考虑在我的库中进行php级别测试…

解决方法

直接取自MySQL文档中的 11.2.6 Out-of-Range and Overflow Handling:

When MySQL stores a value in a numeric column that is outside the permissible range of the column data type,the result depends on the SQL mode in effect at the time:

  • If strict SQL mode is enabled,MySQL rejects the out-of-range value with an error,and the insert fails,in accordance with the SQL standard.
  • If no restrictive modes are enabled,MySQL clips the value to the appropriate endpoint of the range and stores the resulting value instead.

因此,如果您想要一个错误,您需要将MySQL置于严格的SQL模式.如何更改模式在5.1.7 Server SQL Modes中描述.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读