MySQL错误代码:1175在UPDATE期间包括从IN语句中选择的行KEY

时间:2018-09-28 01:46:07

标签: mysql mysql-workbench

我有一个简单的update语句,该语句使用临时表来选择要更新的行的键:

UPDATE table
SET col6 = 1
WHERE id IN (
    SELECT id
    FROM temp_table
);

这会抛出Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column To disable safe mode

但是,如果我这样做:

UPDATE table
SET col6 = 1
WHERE id = 2;

没有错误。

显然,我使用的是正确的密钥(id)。 temp_table中的所有id都是不同的(并存在于目标表中)。临时表中有9595行。我尝试设置我正在使用mysql工作台。

有人知道这是怎么回事吗?


更新:此功能在启用安全模式的情况下起作用:

UPDATE table
SET col6 = 1
WHERE id IN (
    SELECT id
    FROM temp_table
) LIMIT 10000;

仍然不明白为什么,但是认为它可能与选择限制有关……尽管我这样做:SET sql_select_limit=10000原始查询仍然失败。

0 个答案:

没有答案