mysql insert 指定列_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中执行第一条语句时也报错呢?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值