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

Dan*_*Qiu 60 mysql

我现有的表格:

+-----------------+---------------+------+-----+---------+-------------------+
| Field           | Type          | Null | Key | Default | Extra             |
+-----------------+---------------+------+-----+---------+-------------------+
| creation_date   | timestamp     | YES  |     | NULL                        |
Run Code Online (Sandbox Code Playgroud)

我想改变这样的表格:

ALTER TABLE enterprise MODIFY creation_date TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP;
Run Code Online (Sandbox Code Playgroud)

但我得到了这个错误:

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

问题看起来像是将Nullable改为YES为NOT NULL.我是否需要删除列并在之后添加?

rs.*_*rs. 98

看起来有几行具有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;
Run Code Online (Sandbox Code Playgroud)


Vig*_*r A 8

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;
Run Code Online (Sandbox Code Playgroud)

  • 迟到的评论,但我猜这应该是你不能使用只要你有NULL值或直到你没有任何NULL值.否则就不会有问题. (2认同)