Mysql:- 更改表更改列数据类型,获取此错误代码:1292

问题描述 投票:0回答:1

描述我的表

id  bigint unsigned NO  PRI     auto_increment
**tournament_id bigint  YES**           
created_at  timestamp   YES         
updated_at  timestamp   YES 


ALTER TABLE mytable
    CHANGE tournament_id tournament_id  BIGINT UNSIGNED NOT NULL;

收到错误,

Error Code: 1292. Incorrect datetime value: '0000-00-00 00:00:00' for column 'created_at' at row

当我尝试更改特定列的数据类型时,出现意外错误,显示其他列中存在错误。为什么我会收到此错误,请提供帮助。

谢谢

mysql-error-1292
1个回答
0
投票

这是我尝试并解决问题的代码,

SET SQL_SAFE_UPDATES = 0;
UPDATE lounge_matches SET created_at = NULL WHERE created_at <= 0;
COMMIT;
SET SQL_SAFE_UPDATES = 1;

ALTER TABLE lounge_matches
    CHANGE tournament_id tournament_id BIGINT UNSIGNED NULL COMMENT'FK: FK_LMT_TOURNAMENT_ID REFER TOURNAMENTS(ID)';

现在效果很好...

仍然无法理解场景。但是更新抛出错误字段的值可以很好地更改其他字段的数据类型。

我的Mysql版本是8.2.0,我在我的Windows PC上运行数据库服务器。 Mysql 端可能有 bug,不确定。

无论如何,它现在对我有用。

谢谢

© www.soinside.com 2019 - 2024. All rights reserved.