MySQL插入或更新数据时出现1136列数不匹配错误求助
解决MySQL插入/更新时的列数不匹配错误
错误翻译
报错MySQLdb.OperationalError: (1136, "Column count doesn't match value count at row 1")对应中文:
MySQLdb.操作错误:(1136, "第1行的列数与值数不匹配")
问题原因
两处语法错误导致了这个报错:
- VALUES子句中的占位符
%s之间缺少逗号分隔,MySQL会将三个%s识别为单个值,和定义的3列形成数量不匹配。 INSERT INTO TABLE里的TABLE是MySQL的保留关键字,不能直接作为表名使用,需要替换成你的实际表名(比如users)。
修正后的代码
values = (firstname, lastname, age) # 将`your_table_name`替换为你的实际表名 cursor.execute(''' INSERT INTO `your_table_name` (`FirstName`, `LastName`, `Age`) VALUES (%s, %s, %s) ON DUPLICATE KEY UPDATE FirstName=VALUES(FirstName), LastName=VALUES(LastName), Age=VALUES(Age) ''', values)
关键注意事项
ON DUPLICATE KEY UPDATE语法生效的前提是:你的表必须存在唯一索引或主键。比如可以给FirstName和LastName创建组合唯一键,或者给某列设置主键,这样MySQL才能判断"该行已存在"并执行更新操作,否则只会插入新行。
内容的提问来源于stack exchange,提问作者Ritik Ywu
相关产品推荐
相关产品推荐

