반응형
DataGrip에서 SELECT 문으로 몇 개의 컬럼만 조회했을 때 수정이 안 되는 문제가 발생했다.
your_table 테이블에서
select 문으로 column1, column2 를 조회했다.
SELECT column1, column2 FROM your_table;
조회 후 column2 값 200을 500으로 수정 후 커밋 버튼을 눌렀다.
한데 업데이트가 되지 않고 렉이 걸렸다.
락 걸린 테이블에 update문을 실행한 것처럼 커밋이 되지 않았다.
한데
select * from your_table;
로 조회 후 column2값을 수정하면 커밋이 된다.
이에 대한 몇 가지 이유와 해결 방법이 있다고 한다.
- 테이블 전체 조회가 아닌 경우:
- SELECT 문으로 일부 컬럼만 조회했을 경우, DataGrip은 해당 결과를 편집 가능한 테이블로 인식하지 않을 수 있다.
- 기본 키(Primary Key) 부재:
- 조회 결과에 기본 키 컬럼이 포함되지 않으면 DataGrip이 각 행을 고유하게 식별할 수 없어 수정이 불가능할 수 있다.
- 조인(JOIN)이나 복잡한 쿼리 결과:
- 여러 테이블을 조인하거나 복잡한 쿼리 결과는 직접 수정할 수 없다.
해결 방법:
- 모든 컬럼 조회:모든 컬럼을 조회하면 대부분의 경우 수정이 가능해진다.
SELECT * FROM your_table;
- 기본 키 포함:기본 키(예: id)를 포함하여 조회한다.
SELECT id, column1, column2 FROM your_table;
- 테이블 편집기 사용:
- 데이터베이스 탐색기에서 테이블을 우클릭하고 "Table Editor"를 선택하여 직접 테이블을 편집할 수 있다.
- 수동으로 UPDATE 문 작성:직접 UPDATE 문을 작성하여 데이터를 수정할 수 있다.
UPDATE your_table SET column1 = 'new_value' WHERE id = 1;
- DataGrip 설정 확인:
- File > Settings > Database > Data Editor에서 "Allow editing in read-only mode" 옵션이 체크되어 있는지 확인한다.
- 데이터베이스 권한 확인:
- 해당 테이블에 대한 UPDATE 권한이 있는지 확인한다.
2번 방법으로 해결했다.
조회할 테이블에서 기본키를 포함하여 조회를 하면 데이터 수정이 된다.
일부 컬럼한 select하면 어떤 row인지 DataGrip에서 고유행인지 구별하지 못하는 것 같다.
기본키가 있어야 된다.
다른 DB툴로는 수정이 가능했었는데 DataGrip은 까다로운 것 같다.
5번 방법은 찾을 수 없었다.
1번 방법은 원래 가능한 방법 다만 수정하고픈 컬럼만 보기가 불편하다.
반응형