문제 상황
기존에 저장했던 데이터의 수가 굉장히 많았고 이와 연관된 데이터가 많아 함부로 데이터를 삭제하거나 행 자체를 수정하기 어려워, 괄호와 내부 내용을 포함하고 있는 데이터들과 같이 수정이 필요한 한 속성의 데이터들만 골라서 괄호를 포함하여 괄호 내부 내용을 삭제할 수 있도록 하는 코드를 작성해야함
해결 방법
update {테이블명} set {컬럼명} = CONCAT(
SUBSTRING_INDEX({컬럼명}, '(', 1),
SUBSTRING_INDEX({컬럼명}, ')', -1)
)
WHERE {컬럼명} REGEXP '\\(.*\\)';
발생 가능한 오류
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.
위 오류는 Safe Update Mode로 인해 발생한다. 이 모드에서는 Update나 Delete 쿼리를 실행할 때 Where 절에 키 컬럼을 사용하지 않으면, 전체 테이블의 데이터를 수정하는 것을 방지하기 위해 에러가 발생
오류 해결 방법 #1
Where절에 키 컬럼 사용하기
WHERE id = your_id;
위와 같이 Where 조건문 추가해서 작성하기
-> 해당 방법을 사용하여 모든 칼럼 대신 중간에 나눠서 두 번에 걸쳐 진행
오류 해결 방법 #2
Safe Update Mode 비활성화
- 메뉴 > Edit > Preferences > 왼쪽 탐색창 > SQL Editor
- Safe Updates 옵션 > OK 클릭
- MySQL Workbench 재시작 후, 쿼리 재실행
실행 결과
'프로젝트' 카테고리의 다른 글
[프로젝트] 포스트맨 이미지 업로드 및 에러 해결 방법 (0) | 2023.10.15 |
---|---|
[MYSQL] 테이블에 있는 모든 데이터 삭제하기 (0) | 2023.07.05 |
[프로젝트] DB 해킹 해결하기 (0) | 2023.07.05 |
[프로젝트] DB 해킹 (0) | 2023.07.04 |
[프로젝트] mysql auto_increment 초기화 (0) | 2023.06.18 |