You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL修改列类型为INT时报错1366、1064是什么原因?

MySQL修改列数据类型报错问题解答

报错原因说明

你遇到的两个报错均不是CSV源数据第一行是列名导致的,两个报错的独立诱因如下:

  • 错误码1064(语法错误):
    MySQL中ALTER COLUMN语法仅支持修改列的默认值、删除默认值等操作,无法直接修改列的数据类型,所以你写的SQL语句本身不符合MySQL语法规范,触发语法报错。
  • 错误码1366(值转换错误):
    报错提示存在空字符串''无法转换为INT类型,说明你表中现存的total_deaths列里有大量空字符串格式的异常值。如果是CSV表头被导入到表中导致的错误,报错信息会明确提示无法将'total_deaths'字符串转为INT,和你收到的报错内容不符,因此可以排除表头导入的问题。这个错误通常是CSV中的空值在导入时被默认存储为空字符串导致的。

解决步骤

  1. 先清空列中的空字符串异常值,将其转换为合法的NULL值:
UPDATE covidworlddata.coviddeaths 
SET total_deaths = NULL 
WHERE total_deaths = '';

如果需要排查其他非数字异常值,可以执行以下查询确认后处理:

SELECT * FROM covidworlddata.coviddeaths 
WHERE total_deaths NOT REGEXP '^[0-9]+$' 
AND total_deaths IS NOT NULL 
AND total_deaths != '';
  1. 使用正确的MySQL修改列类型语法执行修改操作:
ALTER TABLE covidworlddata.coviddeaths
MODIFY COLUMN total_deaths INT NULL;

如果你需要给列设置非空约束或者默认值,可以在上述语句中自行补充对应配置。

内容的提问来源于stack exchange,提问作者Adam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 10:57:03