У меня есть простой оператор обновления, который использует временную таблицу для выбора ключей строк, которые я хочу обновить:
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
, исходный запрос все еще не выполняется.