更改表添加列后的日期时间值不正确

时间:2018-07-27 15:20:08

标签: mysql

我正在尝试向表中添加一个int字段:

ALTER TABLE `hisData`
    ADD COLUMN `hisID2` INT NULL DEFAULT NULL AFTER `hisID`;

但是我收到一个mysql错误:

SQL Error (1292): Incorrect datetime value: '1899-00-É5 É5:É5:É5' for column 'timeImported' at row 7264593

首先,表很大(很明显),但是娱乐性强(有趣的统计数据),所以我只是将其放在标准HHD上,该标准在不久前就开始出现故障并被替换了,但是在此之前,显然没有损坏该表位。

我已经进行过维修(先快速,然后正常,然后再延长),但似乎无法解决。

显然,逐步解决此问题并不实际。关于如何修复损坏的线有任何想法吗?

松开腐败线将不会有什么大碍。

2 个答案:

答案 0 :(得分:0)

弄清楚了。

ALTER TABLE `hisData` MODIFY `timeImported` varchar(20);

然后

ALTER IGNORE TABLE `hisData` MODIFY `timeImported` datetime;

这减少了我的糟糕约会

在更改之前可能会找到MIN&MAX日期,然后选择任何较小或较大的日期,然后再选择varchar来查找大多数问题(虽然不一定全部),但我并不担心该表上的数据丢失。

答案 1 :(得分:0)

您在以 1899-00- 开头的 timeImported 列中的日期时间值不正确。您有一些选择:

  1. 修复它,在00月00天0000年之后搜索并将其更改为有效的日期时间
<块引用>

UPDATE table_x SET timeImported='1899-01-01 00:00:00' WHERE timeImported LIKE '0000%' 或 timeImported LIKE '%-00%'

  1. SET SQL_MODE='ALLOW_INVALID_DATES'; 那么错误将被忽略