zoukankan      html  css  js  c++  java
  • mysql的unsigned属性负值报错和为0情况及mysql的严格模式

    最近发现在进行线程操作时,发现数据库的unsigned字段减为负数时并未报错而是变为0,因此去寻找解决方案,发现这和我的sql_mode有关。

    sql_mode MySQL服务器可以以不同的SQL模式来操作,并且可以为不同客户端应用不同模式。这样每个应用程序可以根据自己的需求来定制服务器的操作模式

    SELECT @@sql_mode

    用此可以查询当前mysql的数据库模式,一般情况下是显示STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION此三个属性,且是严格模式,

    即出现数据错误会立即报错.但我的mysql初始模式下是只有NO_ENGINE_SUBSTITUTION并不会约束字段的错误,即出现负值,数据库不是报错而是置0;

    下面即如何修改sql_mode

    SET GLOBAL sql_mode='STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'

    其中global表示全局设置,同理用SESSION表示会话模式下即当前的会话情况下数据库模式。

    设置 GLOBAL变量时需要拥有权限,并且会影响从那时起连接的所有客户端的操作。

    设置SESSION变量只影响当前的客户端。任何客户端可以随时更改自己的会话 sql_mode值

    其他的情况还有很多种可以根据需求自己设置

    另附上找到的资料链接:https://www.cnblogs.com/linguoguo/p/6487097.html

  • 相关阅读:
    2019.9.4 二维树状数组
    2019.9.4 简单题
    0052-YH的计算器
    0051-打乱顺序的三位数
    0050-计算天数
    0049-学校的上网费
    0048-三角形的判断
    0047-月份转换
    0046-简单的分段函数(二)
    0045-简单的分段函数(一)
  • 原文地址:https://www.cnblogs.com/lin530/p/11755341.html
Copyright © 2011-2022 走看看