Mysql 更新字段类型异常处理:ERROR 1265 (01000): Data truncated for column ‘xxx’ at row 1
MySQL中需要修改表字段的默认值,在研发环境测试执行SQL没有问题:
mysql> alter table `user` MODIFY COLUMN `weight` int(11) NOT NULL DEFAULT 0 COMMENT '权重分';
Query OK, 330271 rows affected (2.76 sec)
Records: 330271 Duplicates: 0 Warnings: 0
原来的字段类型是这样的:
Field | Type | Null | Key | Default | Extra |
---|---|---|---|---|---|
weight | int(11) | YES | NULL |
结果在生产环境执行异常:
mysql> alter table `user` MODIFY COLUMN `weight` int(11) NOT NULL DEFAULT 0 COMMENT '权重分';
ERROR 1265 (01000): Data truncated for column 'weight' at row 1
网上查询说有可能是字段类型的问题,仔细核对字段类型,发现没有问题。
换种思路,将字段中的值先更新为0,然后再更新,成功了。可能是MySQL版本不同,导致执行结果有区别。
mysql> update `user` set `weight` = 0 where `weight` is null;
Query OK, 330271 rows affected (5.80 sec)
Rows matched: 330271 Changed: 330271 Warnings: 0
mysql> alter table `user` MODIFY COLUMN `weight` int(11) NOT NULL DEFAULT '0' COMMENT '权重分';
Query OK, 330271 rows affected (2.76 sec)
Records: 330271 Duplicates: 0 Warnings: 0
再通过desc查看表结构,搞定!:
Field | Type | Null | Key | Default | Extra |
---|---|---|---|---|---|
weight | int(11) | NO | 0 |