ALTER TABLE不让我设置NULL或默认值?

Abe*_*ler 6 mysql

我试图更改表中的现有列,我必须允许空值,然后将默认值设置为null.我尝试运行以下但它似乎没有更新表:

mysql> ALTER TABLE answers_form MODIFY sub_id int unsigned NULL DEFAULT NULL;
Query OK, 0 rows affected (0.00 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc answers_form;
+--------------+------------------+------+-----+---------+-------+
| Field        | Type             | Null | Key | Default | Extra |
+--------------+------------------+------+-----+---------+-------+
| answer_id    | int(10) unsigned | NO   | PRI | 0       |       |
| sub_id       | int(10) unsigned | NO   | PRI | 0       |       |
| form_id      | int(10) unsigned | NO   | PRI | NULL    |       |
| value        | varchar(255)     | NO   |     | NULL    |       |
| non_response | bit(1)           | YES  |     | b'0'    |       |
+--------------+------------------+------+-----+---------+-------+
5 rows in set (0.01 sec)
Run Code Online (Sandbox Code Playgroud)

谁能看到我在这里做错了什么?

Jus*_*yul 5

它是一个主键,mysql不允许该主键的任何部分为null,这确实使它对form_id的默认值null感到奇怪,但是文档位于

http://dev.mysql.com/doc/refman/5.5/en/optimizing-primary-keys.html

说“ 查询性能得益于NOT NULL优化,因为它不能包含任何NULL值 ”。

只是出于好奇,它实际上是否允许您在form_id字段中输入空值?