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
    

      

  • 相关阅读:
    更好一点的:Vue 利用指令实现禁止反复发送请求
    实现一个深度比较
    Zrender:实现波浪纹效果
    Echarts:实现拖拽效果
    找到树中指定id的所有父节点
    Vue 利用指令实现禁止反复发送请求
    我对组件化的一点细琐的想法
    转盘式旋转抽奖
    信息系统与信息化
    跳出牢笼,逃出生天
  • 原文地址:https://www.cnblogs.com/lvpengbo/p/13824905.html
Copyright © 2011-2022 走看看