1

我们的开发人员在向现有表添加列时经常忘记指定允许空值。如果在使用 Alter Table 命令添加列时不包含 Null,MySQL 默认不允许空值

有没有办法配置 MySQL 以便新列允许空值,除非在 alter table 命令中明确包含 Not Null?

我们使用 PHPMyAdmin 来更改表,因此通过 PHPMyAdmin 使所有新添加的字段允许空值的方法将起作用。

4

2 回答 2

2

MySQL 的默认行为alter table在命令上默认允许空值。它可能与PHPMyAdmin有关。

mysql> desc foo;
+-----------+---------+------+-----+---------+-------+
| Field     | Type    | Null | Key | Default | Extra |
+-----------+---------+------+-----+---------+-------+
| id        | int(11) | YES  |     | NULL    |       | 
| client_id | int(11) | YES  |     | NULL    |       | 
| item_id   | int(11) | YES  |     | NULL    |       | 
+-----------+---------+------+-----+---------+-------+
3 rows in set (0.00 sec)

mysql> alter table foo add (a char(1));
Query OK, 0 rows affected (0.01 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc foo;
+-----------+---------+------+-----+---------+-------+
| Field     | Type    | Null | Key | Default | Extra |
+-----------+---------+------+-----+---------+-------+
| id        | int(11) | YES  |     | NULL    |       | 
| client_id | int(11) | YES  |     | NULL    |       | 
| item_id   | int(11) | YES  |     | NULL    |       | 
| a         | char(1) | YES  |     | NULL    |       | 
+-----------+---------+------+-----+---------+-------+
4 rows in set (0.00 sec)
于 2012-09-06T19:52:43.417 回答
0

您可以在创建新列时指定 DEFAULT NULL,例如:

ALTER TABLE table
ADD COLUMN column VARCHAR(255) DEFAULT NULL;
于 2012-09-06T19:52:50.560 回答