• mysql5.7 column cannot be null


    背景

    独立测试环境安装了数据库,但安装的版本是mysql 5.7的版本,而研发用的是mysql5.6的版本,在执行某个数据库操作的提示,提示column “xxxx”cannot be null

    问题解决

    最快速的方法就是直接询问研发,告知是DB问题,因为mysql从哪个版本开始默认的时间这块有改动,需要修改配置;
    MySQL升级后,在执行sql语句
    insert INTO `表名` ( ) VALUES ( );
    时出现错误:
    #1264 - Out of range value for column ‘’ at row 1
    #1048 - Column 'id' cannot be null
    原因:新版本的MySQL对字段的严格检查。(使用了auto_increment )

    解决方法:
    修改my.ini,将
    sql-mode=”STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION”
    改为
    sql-mode=”NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION”。
    重新启动MySQL。

    Linux 下是改 /etc/my.cnf ,可能没有sql-mode,
    可在[mysqld] 下加 sql-mode=”NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION”

    用 mysql> SELECT @@sql_mode;查询当前模式
    但我在修改这个完后还是无法解决,后来又排查到时另外一个字段的问题-- explicit_defaults_for_timestamp

    [mysqld]
    explicit_defaults_for_timestamp=false
    就可以正常执行了的

  • 相关阅读:
    避免前置声明
    CLion在WSL上远程调试代码设置
    push_back与构造函数
    _BLOCK_TYPE_IS_VALID(pHead->nBlockUse问题解析
    Qt报错
    关于引用与指针实现多态的一些记录
    Vue-Axios异步通信
    Kafka概述
    学习Ajax看着一篇就够了
    学习Json看着一篇就够了
  • 原文地址:https://www.cnblogs.com/jwentest/p/8084814.html
Copyright © 2020-2023  润新知