movies 테이블의 director_id 컬럼의 데이터를 업데이트 하기 위해 다음과 같은 쿼리를 실행했다.
UPDATE
movies
SET
director_id =
(SELECT director_id FROM directors WHERE name = movies.director);
하지만 쿼리 실행 후 Error Code: 1175 메세지를 받았다.
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, toggle the option in Preferences -> SQL Editor and reconnect
DELETE 또는 UPDATE 쿼리를 실행 할 때 발생할 수 있는 에러로,
이는 MySQL의 안전한 업데이트 모드(Safe Update Mode)에서 발생한다.
안전한 업데이트 모드(Safe Update Mode)
사용자의 실수로 테이블의 모든 행을 업데이트하거나 삭제하는 것을 방지하기 위해 만들어진 보호 장치.
안전한 업데이트 모드가 활성화된 상태일 시, DELETE 또는 UPDATE 쿼리를 실행하려면 반드시 WHERE절을 사용해 키 컬럼(Primary key 또는 Unique key 컬럼)을 기반으로 조건을 설정해야 한다.
내가 실행하려고 했던 쿼리는 WHERE절이 없었고, 나도 몰랐던 안전한 업데이트 모드가 활성화 되어 있어서 1175 에러가 발생했던 것이다.
두 가지의 방법으로 해결이 가능하다.
상단 Edit 메뉴 클릭 후 Preferences... 클릭

Preferences 창이 나오면 SQL Editor를 클릭한 후 맨 아래의 Safe Updates의 체크박스를 클릭해 비활성화

간단하게 진행할 수 있는 방법이다.
값을 0으로 주면 안전한 업데이트 모드가 비활성화 되며
값을 1로 주면 안전한 업데이트 모드가 다시 활성화 된다.
SET sql_safe_updates = 0;
SET sql_safe_updates = 1;
안전한 업데이트 모드를 유지하면서 쿼리를 실행하기 위해 WHERE절을 추가한다.
예를 들어, movie_id가 NULL이 아닌 모든 영화의 director_id를 업데이트 하도록 다음과 같이 조건을 추가할 수 있으며, 안전하게 모든 영화에 대해 업데이트를 진행할 수 있다.
UPDATE
movies
SET
director_id =
(SELECT director_id FROM directors WHERE name = movies.director)
WHERE
movie_id IS NOT NULL;
Error Code: 1175는 안전한 업데이트 모드에서 발생하는 오류로, UPDATE나 DELETE 쿼리를 실행할 때 WHERE 절을 명확히 설정하지 않으면 발생한다.
이 문제를 해결하려면 두 가지 방법을 사용할 수 있다.
일반적으로 안전한 업데이트 모드를 유지하며 쿼리를 실행하는 것이 데이터베이스를 보호하는 좋은 방법이므로, WHERE절을 사용하는 것을 권장한다.