zoukankan      html  css  js  c++  java
  • MySQL遇到问题

    1、在开发中遇到一个BUG,无法有效编辑,分析查看日志后发现,MySQL报错:Truncated incorrect DOUBLE value: 'xxx'

    检查后发现sql语法并没有问题,怀疑是字段类型的问题

    执行的sql为

    UPDATE info SET STATE=1 WHERE STATE<>1

    果然,检查表结构后发现state字段为varchar类型,where条件后的STATE<>1将1当做int类型使用,所以报错。正确的写法应该为 

       

    sqlStateCond := []string{"STATE like '%" + state + "%'"}
    
    UPDATE info SET STATE='1' WHERE STATE<>'1‘
    

    2、遇到问题

    [Err] 1292 - Incorrect datetime value: '0000-00-00 00:00:00' for column 'CREATE_TIME' at row 1
    

     发现跟数据库的模式有关系

        当前的MySQL不支持datetime为0的情况

    解决方案:修改sql_mode

          查看sql_mode:

    select @@global.sql_mode;
    

      可以看到,O_ZERO_DATE、NO_ZERO_IN_DATE

          修改全局sql_mode:

    set @@global.sql_mode = 'STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
    

      这时问题解决,然而一旦MySQL重启,就必须重新设置一次全局和当前的sql_mode。

    修改sql_mode配置

    在MySQL配置文件mysql.ini中修改sql_mode配置,就不需要每次重启MySQL就得重新设置sql_mode了。

    • 关闭MySQL
    net stop MySQL57
    

      

    • 修改MySQL配置
      在my.ini的[mysqld]下添加:
    sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
    

      

    • 启动MySQL
    net start MySQL57
    

      

  • 相关阅读:
    【转】SQL SERVER函数无法执行对数据库的修改语句
    【转】用SQL实现树的查询
    HTML: < 和 > 是何方神圣
    ASP.NET的一些小问题
    C#的MD5哈希值计算
    高度自适应的CSS
    [转]WCF类型共享技巧
    使用.net的跟踪诊断来记录wcf消息
    【转】js frame 框架编程
    js点击button按钮跳转到页面代码
  • 原文地址:https://www.cnblogs.com/lvpengbo/p/13824905.html
Copyright © 2011-2022 走看看