• 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
    

      

  • 相关阅读:
    自定义View
    Android Parcelable
    java IO
    如何安全退出已调用多个Activity的Application?
    cookie和session
    Excel 使用AutoFill提示“类Range的AutoFill方法无效”
    解决“配置系统未能初始化”问题
    Android控件第7类——对话框
    Android控件第6类——杂项控件
    Android控件第5类——ViewAnimator
  • 原文地址:https://www.cnblogs.com/lvpengbo/p/13824905.html
Copyright © 2020-2023  润新知