更新时出现未知列错误

时间:2016-04-07 01:22:08

标签: mysql mysql-workbench sequelpro

我在其中一张桌子上遇到一些我无法追踪的奇怪行为。每当我尝试执行更新时,我都会收到一个未知列错误

当我尝试跑步时:

UPDATE `bakerevents` SET `score`=300 WHERE `id`=2910;

我收到以下错误:

  

未知栏' bakerevents.id'在'字段列表'

当我对此id运行select时,我没有收到任何错误,并返回该行:

SELECT * FROM `bakerevents` WHERE `id`=2910;
{
    "data":
    [
        {
            "id": 2910,
            "match_id": 1404,
            "game_number": 2,
            "school_id": 3,
            "score": 162,
            "result": 1,
            "updated_at": "2014-12-20 05:31:13",
            "create_user_id": 24,
            "update_user_id": 0,
            "created_at": "0000-00-00 00:00:00"
        }
    ]
}

请参阅下面的数据库创建表语法:

CREATE TABLE `bakerevents` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `match_id` int(11) NOT NULL,
  `game_number` int(11) NOT NULL,
  `school_id` int(11) NOT NULL,
  `score` int(11) NOT NULL DEFAULT '0',
  `result` decimal(11,1) NOT NULL COMMENT '1=Win 0=Loss',
  `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `create_user_id` int(11) NOT NULL DEFAULT '0',
  `update_user_id` int(11) NOT NULL DEFAULT '0',
  `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7251 DEFAULT CHARSET=latin1;

有关导致错误的原因的任何想法?

2 个答案:

答案 0 :(得分:1)

您的错误很奇怪,因为它包含表名和列名。我希望这个版本有错误:

UPDATE `bakerevents`
    SET `score` = 300
    WHERE `bakerevents.id` = 2910;

你的名字都不需要逃脱。所以试试没有反引号:

UPDATE bakerevents
    SET score = 300
    WHERE id = 2910;

答案 1 :(得分:1)

今天早上我终于找到了这个。我在这个表上有一个旧的更新后触发器,导致了这个问题。触发器未成功完成,导致问题。一旦我删除了触发器,更新就完成了,没有错误。如果您将来遇到这种情况,请务必检查您的触发器。