执行SQL插入语句报错Column count doesn't match value count at row 1原因求解
MySQL插入报错问题解答
报错根因
Column count doesn't match value count at row 1 报错的核心逻辑是:你执行的INSERT语句未指定插入列时,传入的值的数量和当前employee表的实际字段数量不一致。
你提供的建表语句和插入语句从字面上看字段数(共8个)和值数(共8个)是匹配的,所以优先排查以下两种常见场景:
- 执行插入操作前,你曾执行过
ALTER TABLE语句对employee表的字段做过增删操作,导致表的实际字段数和最初建表的8个字段不一致,插入时没有同步调整值的数量 - 执行插入语句时手误漏写/多写了值,比如漏了某个逗号、多写了一个值项,导致语句解析后的值数量和字段数不匹配
额外注意事项
你当前插入语句中的日期值'1967-17-11'是非法格式:MySQL的DATE类型要求格式为YYYY-MM-DD,月份取值范围为1-12,该值中的17月不存在,就算列数匹配后也会触发日期格式错误,建议修正为合法日期,比如'1967-11-17'。
最佳实践
建议INSERT语句显式指定插入的列名,既可以避免表结构变更后语句失效的问题,也可以更清晰的识别值和列的对应关系,示例写法:
INSERT INTO employee (emp_id, first_name, last_name, birth_date, sex, salary, super_id, branch_id) VALUES (100, 'David', 'Wallace', '1967-11-17', 'M', 250000, NULL, NULL);
内容的提问来源于stack exchange,提问作者Doguhan İlter
相关产品推荐
相关产品推荐

