执行SQL脚本报1241错误 代码问题排查与原因分析
MySQL 1241报错排查与修复
报错根因
MySQL抛出1241错误的含义是操作数仅允许包含1列,你的代码问题出在INSERT语句的传值写法:
- 表结构中
MOYEN_RENT字段定义为DECIMAL(5,2)类型,属于单值数值字段,仅需传入一个符合精度要求的数值即可 - 你在VALUES子句中给该字段传入了
(300, 45),这是MySQL的行构造语法,代表一组包含多列的元组,相当于给单值字段传入了2个值,语法匹配失败就会触发报错。
修复方案
去掉单值字段外多余的括号,将传入的元组改为单个合法数值即可。如果你的预期是给MOYEN_RENT存入300.45,修正后的完整SQL如下:
CREATE TABLE MOROCCO ( NUM_PER_MANAGE INT , MOYEN_RENT DECIMAL (5,2), GENDER enum ('m','f'), race varchar (205) ); INSERT INTO morocco (NUM_PER_MANAGE, MOYEN_RENT, GENDER, race) VALUES (3, 300.45, 'm', 'black');
补充说明
带括号的逗号分隔写法仅用于两种合法场景:
- 包裹INSERT语句中一整行的所有字段值
- 多行插入时,分隔每一行的整组值,例如
VALUES (1, 120.5, 'f', 'white'), (3, 300.45, 'm', 'black')
单个字段赋值时,不要随意给值加圆括号、写入多个逗号分隔内容。
内容的提问来源于stack exchange,提问作者Brahim Naitdaoud
相关产品推荐
相关产品推荐

