MySQL修改employee表empType字段为int时触发ERROR1366错误如何解决?
报错原因
- 当前
employee表的empType字段存储的全部是「General Manager」这类字符串类型的职位名称,MySQL不支持直接将字符串类型的字段值批量转换为整数类型,因此直接修改字段类型为int(7)时会触发类型不匹配报错。
解决步骤
首先需要将employee表中empType的字符串值替换为employeeType表中对应职位的ID,再修改字段类型,操作如下:
- 关联两张表更新
empType的取值为对应ID
UPDATE employee e INNER JOIN employeeType et ON e.empType = et.type SET e.empType = et.ID;
注:此时
empType仍是varchar类型,存入数字格式的字符串不会触发报错,后续修改字段类型时MySQL可自动完成格式转换。
- 再次执行修改字段类型的命令
ALTER TABLE employee MODIFY COLUMN empType int(7) NOT NULL;
- (可选)添加外键约束保证数据一致性
ALTER TABLE employee ADD CONSTRAINT fk_employee_emptype FOREIGN KEY (empType) REFERENCES employeeType(ID);
内容的提问来源于stack exchange,提问作者zihao zhang
相关产品推荐
相关产品推荐

