MySQL Alter table causes Error:无效使用NULL值

xzv2uavs  于 2023-06-21  发布在  Mysql
关注(0)|答案(3)|浏览(197)

我的现有表:

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

我想把table改成这样:

ALTER TABLE enterprise MODIFY creation_date TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP;

但是我得到了这个错误:
第7行错误1138(22004):无效使用NULL值
这个问题看起来像是将Nullable从YES更改为NOT NULL。我是否需要删除列并在之后添加?

yqhsw0fo

yqhsw0fo1#

似乎有几行的值为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;
n3h0vuf2

n3h0vuf22#

creation_date列中没有NULL值之前,不能使用此查询。
用一些默认日期更新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;
thtygnil

thtygnil3#

简单地说,如果表中充满了数据,我们就不能改变表的结构。
求解为:
1.删除所有数据(DELETE FROM table_name)或更新(UPDATE table_name set new_value where condition
1.使用(ALTERMODIFYCHANGE)更新表的结构

相关问题