1366 - Incorrect DECIMAL value_ ‘0‘ for column ‘‘ at row -1 修改MySQL字段报错解决

问题描述

排查数据库表字段时发现数据库金额字段用的是varchar,通过以下语句调整修改该字段为decimal时:

ALTER TABLE `table_name` 
MODIFY COLUMN `credit_quota` decimal(24, 6) NULL DEFAULT NULL COMMENT '授信额度' after `credit_currency`;

报错如下:
image.png

1366 - Incorrect DECIMAL value: ‘0’ for column ‘’ at row -1

解决方案

根据报错信息翻译是:错误的DECIMAL值在某一个行
应该是有些数据存储是varchar字符串存在"0",无法转换位decimal的数值类型。
查询是否有这种数据:

select * from table_name where credit_quota = '0' or credit_quota = '';

解决办法:
把为字符串0、空字符串’’ 的数据清除或更改为null:

update table_name set credit_quota = null where credit_quota = '0' or credit_quota = '';

修改完成后,重新调整字段:

ALTER TABLE `table_name` 
MODIFY COLUMN `credit_quota` decimal(24, 6) NULL DEFAULT NULL COMMENT '授信额度' after `credit_currency`;

执行成功,修改完成。

猜你喜欢

转载自blog.csdn.net/qq_35427589/article/details/130292194
今日推荐