zoukankan      html  css  js  c++  java
  • sql_mode引发的数据库问题

      前几天,在本地做完项目,测试完毕后,上传到线上服务器的时候,在做很多写入数据库的操作时,发现全部发生500报错,返回的报错信息是,某个字段没有默认值,写入的时候没有添加这个字段,该字段在数据表中是NOT NULL并且无默认值,导致插入失败。

      查询原因是从本地上传服务器项目时,服务器数据库由原来的5.6升级为5.7,mysql配置文件中的sql_mode配置中STRICT_TRANS_TABLES这个配置在限制写入库。

      STRICT_TRANS_TABLES(存储引擎启用严格模式,非法数据值被拒绝)

      启用这个就会报错,所以修改sql_mode去掉STRICT_TRANS_TABLES,测试了一下恢复正常。

      先在数据库查询sql_mode:

    SELECT @@GLOBAL.sql_mode;
    

      发现sql_mode中含有STRICT_TRANS_TABLES。

      然后在自己的服务器中打开mysql.conf(泛指数据库配置文件)加入下面这一行:

    sql_mode='NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'
    

      总结:在设计数据库的时候,要严谨添加字段,如果设置某个字段不为null时,要给该字段添加上默认值,这样也不会发生写入的时候报错的问题。

      by as

  • 相关阅读:
    周末郑州程序员朋友技术交流中的PPT
    WCF并发连接数的问题
    郑州.Net技术人员的招聘信息
    在路上
    Windows8体验(1)安装
    挖掘0day打进不同学校
    记一次绕过宝塔防火墙的BC站渗透
    一次实战中对tp5网站getshell方式的测试
    一次从弱口令到getshell
    一次HW实战
  • 原文地址:https://www.cnblogs.com/widgetbox/p/9394495.html
Copyright © 2011-2022 走看看