为什么Mysql在更新查询中返回错误代码1241?

时间:2018-11-18 23:19:18

标签: mysql

我正在使用Mysql Workbench 8.0.12,我有一个包含三列的表(tblproduction):

idProduction INT PK AI
dateProduction DATETIME
statusProduction VARCHAR(15)

例如,当我尝试将列statusProduction的值更改为以下查询时,从“ queue”更改为“ done”(SELECT,INSERT和DELETE查询都可以):

UPDATE tblproduction 
SET statusProduction = 'done'
WHERE idProduction=1;

系统返回"Error Code: 1241. Operand should contain 1 column(s)." 我进行了一些研究,发现此错误代码与语法错误有关,但是我在查询中没有发现任何问题。

如果我尝试执行以下操作:

UPDATE tblproduction 
SET statusProduction = 'done'
WHERE idProduction='a';

尽管实际上影响了0行,但系统实际上运行了查询,但是如果我尝试这样做,它也会给我同样的错误消息:

UPDATE tblproduction 
SET statusProduction = 'done'
WHERE idProduction='1';

我真的不知道出什么问题了,我知道这是一个愚蠢的问题,但是是否有人可以帮助我。

3 个答案:

答案 0 :(得分:0)

 please try using this method :      
 I have created a table and inserted the record like this :
                select * from tblproduction;
                +--------------+---------------------+------------------+
                | idProduction | dateProduction      | statusProduction |
                +--------------+---------------------+------------------+
                |            1 | 2018-11-19 08:22:11 | queue            |
                +--------------+---------------------+------------------+

            use update query :
            UPDATE `test`.`tblproduction` SET `statusProduction` = 'done' WHERE `tblproduction`.`idProduction` =1;

            got result :
            --------------+---------------------+------------------+
            | idProduction | dateProduction      | statusProduction |
            +--------------+---------------------+------------------+
            |            1 | 2018-11-19 08:22:11 | done             |
            +--------------+---------------------+------------------+

答案 1 :(得分:0)

我无法重现您的问题,请参阅https://rextester.com/OQI5184

#MySQL 5.7.12
#'\\' is a delimiter

DROP TABLE IF EXISTS tblProduction;

CREATE TABLE IF NOT EXISTS tblProduction (
    idProduction INT NOT NULL AUTO_INCREMENT
    , dateProduction DATETIME NOT NULL
    , statusProduction VARCHAR(15) NOT NULL
    , PRIMARY KEY (idProduction)
    ) 
;    


INSERT INTO tblProduction(dateProduction,statusProduction) VALUES ('2018-11-20','start');

SELECT * FROM tblProduction;

UPDATE tblproduction 
SET statusProduction = 'done'
WHERE idProduction=1;

SELECT * FROM tblProduction;

结果:

+---+--------------+---------------------+------------------+
|   | idProduction |   dateProduction    | statusProduction |
+---+--------------+---------------------+------------------+
| 1 |            1 | 20.11.2018 00:00:00 | start            |
+---+--------------+---------------------+------------------+

+---+--------------+---------------------+------------------+
|   | idProduction |   dateProduction    | statusProduction |
+---+--------------+---------------------+------------------+
| 1 |            1 | 20.11.2018 00:00:00 | done             |
+---+--------------+---------------------+------------------+

答案 2 :(得分:0)

所以问题既不是查询也不是表,该表上有一个更新触发器(我放下进行测试的女巫,但没有工作),总之,我不得不放下数据库并全部创建再次没有创建触发器。这次更新查询成功了,我现在正在处理触发器,看看是否能找到问题所在