Python中MySQL Connector报'Truncated incorrect DOUBLE value'错误的原因与解决
错误
1292 (22007): Truncated incorrect DOUBLE value:的原因与修复方案 这个错误表示MySQL执行语句时,试图将**字符串类型数据转换为数字类型(DOUBLE)**失败——因为字符串内容无法被解析为有效数字,导致数据截断或转换错误。你的数据库表结构本身没有问题,问题出在Python代码的参数绑定逻辑上。
代码问题分析
你的SQL更新语句中,占位符%s的顺序是:emp_name → emp_last_name → emp_email → emp_status → emp_id,但你构造的参数元组updated_data顺序却是:emp_id → emp_name → emp_last_name → emp_email → emp_status,两者完全不匹配。
具体来说,SQL语句的WHERE emp_id = %s需要接收整数类型的emp_id,但你最后传入的是字符串类型的emp_status,MySQL尝试将这个字符串转成数字类型(对应emp_id的INTEGER),直接触发了转换错误。另外你的函数名存在语法错误(update function中间不能有空格,需符合Python标识符规范)。
修正后的代码
def update_function(emp_id, emp_name, emp_last_name, emp_email, emp_status): emp_data = mysqlconn.cursor() sql_update_query = ("UPDATE employee set emp_name = %s, emp_last_name = %s, emp_email = %s, emp_status = %s WHERE emp_id = %s") # 修正参数顺序:与SQL占位符顺序一一对应 updated_data = (emp_name, emp_last_name, emp_email, emp_status, emp_id) emp_data.execute(sql_update_query, updated_data) mysqlconn.commit() print("Data Updated")
注意事项
- 参数元组的顺序必须和SQL语句中占位符
%s的顺序完全一致,类型不匹配或顺序错误都会触发数据类型转换类错误。 - Python函数名不能包含空格,需遵循标识符命名规则。
内容的提问来源于stack exchange,提问作者Kais Al Kaisy
相关产品推荐
相关产品推荐

