我正在为一个项目使用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)
2条答案
按热度按时间q9rjltbz1#
这是一个完全法律的的组合。这意味着当您尝试插入一个新行并且没有显式指定此列的值时,它将默认为
null
,因此会出错。这种组合通常用作强制您显式为列赋值而不是仅依赖默认值的方法。i7uq4tfw2#
1.我们应该知道:
1.我们应该知道:在MySQL中,空不等于“NULL”,如果我们不向列中插入任何内容,它将保持为空(它不会向该列中插入“NULL”)
1.因此,当“Null(NO)”与“Default(NULL)"一起出现时,如果我们不向该值插入任何内容,它将具有默认值“NULL”,并且它将与约束冲突,然后它将抛出异常