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

  • 相关阅读:
    java--io流之转换流
    java--IO流之字节流、字符流
    java--递归
    java--IO流之File类
    java --JDBC
    2018-09-15JDBC事务详解1
    2018-09-10JSP内容和标签的查看权限+9个内置对象
    2018-09-12DBUtils工具包+DBCP连接池
    2018-09-08Cookie的发送和Cookie的读取+Session基本原理
    参考博客:URI和URL的区别
  • 原文地址:https://www.cnblogs.com/lin530/p/11755341.html
Copyright © 2011-2022 走看看