Код ошибки MySQL: 1175 во время ОБНОВЛЕНИЯ, который включает КЛЮЧИ строки, выбранные из оператора IN - PullRequest
0 голосов
/ 28 сентября 2018

У меня есть простой оператор обновления, который использует временную таблицу для выбора ключей строк, которые я хочу обновить:

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

Однако, если яdo:

UPDATE table
SET col6 = 1
WHERE id = 2;

Нет ошибки.

Очевидно, я использую правильный ключ (id).Все идентификаторы в таблице temp_table различны (и существуют в целевой таблице).В временной таблице 9595 строк.Я пытался настроить Я использую MySQL верстак.

Кто-нибудь знает, что здесь происходит?


ОБНОВЛЕНИЕ: Это работает с включенным безопасным режимом:

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

Все еще не понимаю, почему, но думаю, что это может иметь какое-то отношение к пределу выбора ... Хотя, когда я делаю: SET sql_select_limit=10000, исходный запрос все еще не выполняется.

...