[데이터베이스] DB 테이블의 행 삭제가 안될 때

업데이트:

[SQL] DB 테이블의 행 삭제가 안될 때

참고링크

운영체제 프론트엔드 백엔드 데이터베이스 인프라
리눅스구조 js필터 아파치에러로그 행삭제 아파치스쿱
프로세스 헬로월드 웹서버개념 ES기초 로그분석
네임스페이스 프로젝트생성 아파치설치 MySQL기초 beeline
디렉토리 헤더생성 flask연동 큐브리드 하둡기초
리다이렉션 async-get 장고MsSQL연결 null공백 나이파이
쓰레드 async-post 장고MySQL연결 MySQL설치(win) 백본
라즈베리파이설치 로그인페이지 장고inpectdb MySQL테이블생성 제플린
OSI7계층소개   장고read   SSL인증
OSI1계층   장고insert   커버로스
OSI2계층   장고put   도커개념
OSI3계층   장고del   도커설치
OSI4계층   flask한글요청   도커기초
OSI5,6,7계층       도커이미지
DNS서버       컨테이너네트워크
DHCP       도커API
bashrc       도커컴포즈
bash       도커볼륨
ifconfig       장고이미지
소켓프로그래밍       도커postgre
리눅스유저생성       도커이미지삭제
netstat포트열기       도커Redis
컴파일러       k8s구조
운영체제vs커널       k8s설치
작업스케쥴링       k8s서비스배포
디스크추가       POD네트워크
aws유저추가       퍼시스턴트볼륨
기초명령어       k8s에러
포트번호        

DB 테이블에서 특정 행을 삭제하고 싶어 아래와 같은 명령어를 입력했다. 나는 2019년 3월 7일부터 3월 20일까지의 데이터를 tableA라는 테이블에서 삭제하고 싶었다.

delete from tableA where dt between '2019-03-07' and '2019-03-20'

하지만 아래와 같은 에러가 뜨는데

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

1.첫번째 방법

위 에러 메시지 처럼 Edit -> Preferences 로 이동하여 아래 그림에서 노란 체크박스를 해제하는 것이 첫번째 방법이다. (기본적으로는 체크되어 있을 것이다.)

Figure1

하지만 이 방법은 옵션을 바꿀때마다 재시작을 해야하니 나는 다른 방법을 썼다.

2.두번째 방법

두번째 방법으로 임시적으로만 옵션해제 하는 방법을 사용하자. 사용법은 쿼리를 날리기 전에 아래와 같은 한 문장을 삽입하는 것이다.

set sql_safe_updates=0;
delete from tableA where dt between '2019-03-07' and '2019-03-20'

이렇게 하면 문제없이 해당 행(row)삭제 가능하다.