更新时出现未知列错误
Unknown Column Error on Update
我在我的 table 之一上遇到了一些我无法追踪的奇怪行为。每当我尝试执行更新时,我都会收到未知列错误
当我尝试 运行:
UPDATE `bakerevents` SET `score`=300 WHERE `id`=2910;
我收到以下错误:
Unknown column 'bakerevents.id' in 'field list'
当我在这个 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"
}
]
}
请参阅下面我的数据库创建 table 语法:
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;
对导致错误的原因有什么想法吗?
您的错误很奇怪,因为它同时包含 table 名称和列名称。我预计此版本会出现该错误:
UPDATE `bakerevents`
SET `score` = 300
WHERE `bakerevents.id` = 2910;
None 个名称需要转义。所以尝试不使用反引号:
UPDATE bakerevents
SET score = 300
WHERE id = 2910;
今天早上我终于找到了这个。我在这个 table 上有一个旧的 post 更新触发器导致了这个问题。触发器未成功完成,这是导致问题的原因。一旦我删除了触发器,更新就完成了,没有错误。如果您以后遇到这种情况,请务必检查您的触发器。
我在我的 table 之一上遇到了一些我无法追踪的奇怪行为。每当我尝试执行更新时,我都会收到未知列错误
当我尝试 运行:
UPDATE `bakerevents` SET `score`=300 WHERE `id`=2910;
我收到以下错误:
Unknown column 'bakerevents.id' in 'field list'
当我在这个 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"
}
]
}
请参阅下面我的数据库创建 table 语法:
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;
对导致错误的原因有什么想法吗?
您的错误很奇怪,因为它同时包含 table 名称和列名称。我预计此版本会出现该错误:
UPDATE `bakerevents`
SET `score` = 300
WHERE `bakerevents.id` = 2910;
None 个名称需要转义。所以尝试不使用反引号:
UPDATE bakerevents
SET score = 300
WHERE id = 2910;
今天早上我终于找到了这个。我在这个 table 上有一个旧的 post 更新触发器导致了这个问题。触发器未成功完成,这是导致问题的原因。一旦我删除了触发器,更新就完成了,没有错误。如果您以后遇到这种情况,请务必检查您的触发器。