MySql Field '*' doesn't have a default value问题

1、问题:

     写了个注册页面,在本地服务器没有报错,上传到空间之后出现了这个问题。

     字面上来看是某个字段没有设置默认值。

     根据提示找到这条sql语句 `integral` varchar(225) NOT NULL ,这里只设置了非空,并没有设置默认值,可以设置默认值来排除错误在后面加上 DEFAULT ' 想要的值',就可以了

     当然,也可以在进行数据库操作的时候顺便插入该值,也能达到相同效果。

 

2、思考:

     为什么在本地进行数据库操作的时候就不报错呢,检查数据库,相关字段下面的确没有赋值。查了一下,

     在MySQL 5.0.2之后对数据输入进行了强制性的加严处理,并且保留了以前的MySQL对非法或不当值并不严厉的行为,

     MySQL默认是对数据进行加严处理,但你可以为不良值选择更传统的处理方法,从而使得服务器能够拒绝并放弃出现不良值的语句。

     应该是MySql 5.0以上版本都默认是Strict Mode

 Strict Mode:

   1) 不支持对not null字段插入null值
      2) 不支持对自增长字段插入''值,可插入null值
      3) 不支持 text 字段有默认值

   关闭方法:

   找到MySQL目录下的my.ini

      将sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

      修改为sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

      重新启动 Mysql服务

 

3、延伸:

   有几种情况同样也可能产生同样的报错信息

        (1) id 作为主键,int类型,未设置 auto_increament

        (2) 少字段

 

转载于:https://www.cnblogs.com/ETcetera/p/8707759.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值