desc table in mysql 说 Null 是 No 但默认是 NULL?

desc table in mysql say Null is No but default is NULL?

我正在为一个项目使用 mysql。当我执行 'desc table_name' 时,我看到表格输出显示字段的 Null 设置为 No,但随后 'Default' 设置为 NULL。一个字段怎么可能没有 Null 但默认值是 Null 本身?

mysql> desc users;                                                                                 
+-----------------+------------------+------+-----+----------------------------+----------------+  
| Field           | Type             | Null | Key | Default                    | Extra          |  
+-----------------+------------------+------+-----+----------------------------+----------------+  
| id              | int(10) unsigned | NO   | PRI | NULL                       | auto_increment |  
| created_at      | timestamp        | YES  |     | NULL                       |                |  
| updated_at      | timestamp        | YES  |     | NULL                       |                |  
| email           | varchar(255)     | NO   |     | NULL                       |                |  
| password        | varchar(255)     | NO   |     | NULL                       |                |  
| remember_token  | varchar(100)     | YES  |     | NULL                       |                |  
| profile_pic     | varchar(255)     | YES  |     | img/profile/profilepic.jpg |                |  
| activation_code | varchar(255)     | YES  | UNI | NULL                       |                |  
| status_id       | int(10) unsigned | NO   | MUL | 1                          |                |  
| profile_id      | int(10) unsigned | YES  | MUL | NULL                       |                |  
+-----------------+------------------+------+-----+----------------------------+----------------+  
10 rows in set (0.00 sec)                                                                          

这是一个完美的合法组合。这意味着当您尝试插入一个新行并且没有明确指定该列的值时,它将默认为 null 并因此出错。这种组合通常用作强制您显式为列分配值而不是仅仅依赖默认值的一种方式。