我的字段不允许NULL值,这很奇怪。如果我插入一行,则该字段默认为空字符串,即使mysql声称默认值为NULL。
mysql> describe user;
+---------------------------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------------------------+------------------+------+-----+---------+----------------+
| id | int(30) | NO | PRI | NULL | auto_increment |
| username | varchar(45) | NO | UNI | NULL | |
| city | varchar(45) | NO | | NULL | |
+---------------------------+------------------+------+-----+---------+----------------+
mysql> show triggers;
Empty set (0.00 sec)
mysql> insert into user (username) values ('just_testing');
Query OK, 1 row affected, 17 warnings (0.01 sec)
Run Code Online (Sandbox Code Playgroud)
这就是我要去的地方?!-城市应默认为NULL,这是不允许的,但请查看此处:
mysql> select username, city from user where username = 'just_testing' and city is null;
Empty set (0.00 sec)
mysql> select username, city from user where username = 'just_testing' and city='';
+--------------+------+
| username | city |
+--------------+------+
| just_testing | |
+--------------+------+
1 row in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)
Mysql已决定使用空字符串作为默认字符串,即使不是这样,也没有任何触发器。
并进一步:
mysql> insert into user (username, city) values ('just_testing3', NULL);
ERROR 1048 (23000): Column 'city' cannot be null
Run Code Online (Sandbox Code Playgroud)
我在俯视什么?“城市”列如何默认为“”?