Mysql INT字段默认为0且允许为空,传空值却失败?

当尝试在MySQL中为INT字段输入空值时,即使字段设置允许为空且默认为0,也会遇到错误。这可能由于SQL严格模式(STRICT_TRANS_TABLES)导致。解决方法包括在程序中预设默认值或修改MySQL配置,取消严格模式。在Windows的my.ini和Linux的my.cnf文件中,将sql-mode设置为'NO_ENGINE_SUBSTITUTION'即可禁用严格模式。
摘要由CSDN通过智能技术生成

Mysql INT字段设置了允许为空且默认为0,然而传一个空值''却失败?

起因:

这是最近在UT框架中遇到的一个问题,有零散用户反映在某面板集成环境中安装UT模块出现无法创建数据的现象,起初我们是建议用户换一个面板问题便解决。等空闲之后细心研究发现:程序没问题、MYSQL字段设置也没问题,在这个面板中确实存在无法创建数据的问题,经过梳理和测试,发现某个INT字段若是传值没问题,传空值却有问题(字段允许为空或不为空且默认为0的条件下)。

问题:

有些时候我们需要某些INT字段为空或默认为0(无论是否有值,程序上都进行了该字段的入库),这是一种不太严格的方式,但MYSQL5+版本默认配置了INT不得传递空值(无论你允许为空还是不为空)。经过翻阅资料,发现sql-mode这个节点配置值中有STRICT_TRANS_TABLES这一项,即严格模式,那么问题便好解决了。

解决:

此问题有2种解决方案:

  1. 程序上不允许传空值,入库前对值进行判断,为空时,给一个默认值再入库。

  2. 去除Mysql配置sql-mode中关于STRICT_TRANS_TABLES的项。

    win下修改my.ini中sql-mode值为:NO_ENGINE_SUBSTITUTION        

    Linux下修改my.conf中sql-mode值为:NO_ENGINE_SUBSTITUTION        

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值