MySQL Alter表导致错误:无效使用NULL值


73

我现有的表格:

+-----------------+---------------+------+-----+---------+-------------------+
| Field           | Type          | Null | Key | Default | Extra             |
+-----------------+---------------+------+-----+---------+-------------------+
| creation_date   | timestamp     | YES  |     | NULL                        |

我想这样修改表:

ALTER TABLE enterprise MODIFY creation_date TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP;

但是我得到了这个错误:

第7行出现错误1138(22004):无效使用NULL值

从将“是”的“可空”更改为“非空”后,问题看起来就好了。我需要删除该列然后再添加吗?

Answers:


127

似乎只有几行具有NULL值。将所有null值更新为该列中的默认日期,然后尝试进行更改。

尝试这个

--update null value rows
UPDATE enterprise
SET creation_date = CURRENT_TIMESTAMP
WHERE creation_date IS NULL;


ALTER TABLE enterprise 
MODIFY creation_date TIMESTAMP NOT NULL 
DEFAULT CURRENT_TIMESTAMP;

7

NULLcreation_date 列中没有值之前,您无法使用此查询。

creation_date使用一些默认日期更新您的列,然后更改表。

像这样

UPDATE enterprise SET creation_date = CURRENT_TIMESTAMP WHERE creation_date IS NULL;

ALTER TABLE enterprise MODIFY creation_date TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP;

2
最新评论,但我猜测应该是只要有NULL值就不能使用,或者直到没有NULL值为止。否则就不会有问题。
thisisboris

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.