您好,欢迎来到花图问答。
搜索
您的当前位置:首页Mysql 5.6.30 insert null (ERROR

Mysql 5.6.30 insert null (ERROR

来源:花图问答

问题

对定义了ctime为not null的表,insert ctime null 在开发环境可以通过,但是部署上线出问题了,提示
ERROR 1048 (23000): Column ‘ctime’ cannot be null

分析

  • 对比表结构
  • 对比执行sql
  • 考虑可配置参数

解决方案

  1. 表结构一样

  2. 开发环境是Mysql 5.6.30; 线上环境是Mysql 5.7.11 考虑到版本问题对Mysql
    5.6.27 / Mysql 5.7.10 / Mysql 5.6.24 进行测试,与线上环境的情况一致。

结论

综上,结合4,5可以判断为,在定义了not null的字段,只有5.6.30 insert null会通过,属于特别情况。 属于版本问题,建议你如果需要insert null,就不要定义为not null!

测试脚本

DROP TABLE IF EXISTS test;
CREATE TABLE `test` (
  `id` BIGINT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
  `number` VARCHAR(20) NOT NULL,
  `status` TINYINT(1) NOT NULL DEFAULT '1',
  `ctime` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `utime` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  UNIQUE KEY `idx_number_UNIQUE` (`number`)
) ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='白名单';

SELECT * FROM test;
INSERT INTO test(`status`) VALUE(1);
SELECT * FROM test;
INSERT INTO test(number,`status`,ctime) VALUE(2,2,NULL);
SELECT * FROM test;

Copyright © 2019- huatuowenda.com 版权所有 湘ICP备2023022495号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务