开发者社区> 问答> 正文

mysql(5.5.40) insert时未指定列(非空)的默认值问题咨询?报错

奇怪!明明创建表时设置的字段为NOT NULL,但下面这种方式仍能插入成功呢?

mysql> show create table t \G
*************************** 1. row ***************************
       Table: t
Create Table: CREATE TABLE `t` (
  `a` varchar(10) NOT NULL,
  `b` varchar(10) NOT NULL,
  `c` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1
1 row in set (0.00 sec)


mysql> insert into t(a) values('1') ;
Query OK, 1 row affected, 2 warnings (0.11 sec)


mysql> select * from t;
+---+---+---+
| a | b | c |
+---+---+---+
| 1 |   | 0 |
+---+---+---+
1 row in set (0.01 sec)


mysql版本为:

mysql> select version();
+-------------------------+
| version()               |
+-------------------------+
| 5.5.40-0ubuntu0.14.04.1 |
+-------------------------+

但上述语句在mysql5.6.17版本中执行时就会报错。

另外在 5.5.40-0ubuntu0.14.04.1中若显式指定NULL就不行了。如 下所示:

mysql> insert into t(a,b) values('1',null) ;
ERROR 1048 (23000): Column 'b' cannot be null


可有人知道原因?如何使得在5.5.40中执行第一条语句时也报错呢?

展开
收起
爱吃鱼的程序员 2020-06-14 17:31:31 692 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    showvariableslike'sql_mode'

    看一下在两个服务器上的sql模式

    引用来自“逝水fox”的评论

    showvariableslike'sql_mode'

    看一下在两个服务器上的sql模式

    2020-06-14 17:31:49
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
搭建电商项目架构连接MySQL 立即下载
搭建4层电商项目架构,实战连接MySQL 立即下载
PolarDB MySQL引擎重磅功能及产品能力盛大发布 立即下载

相关镜像