Dev/DB

[Mysql] DataGrip Select문으로 조회 후 데이터 수정 안되는 이유

Andrea.K 2024. 8. 13. 05:20
반응형

 

DataGrip에서 SELECT 문으로 몇 개의 컬럼만 조회했을 때 수정이 안 되는 문제가 발생했다.

 

your_table 테이블에서

select 문으로 column1, column2 를 조회했다.

 

SELECT column1, column2 FROM your_table;

조회 후 column2 값 200을 500으로 수정 후 커밋 버튼을 눌렀다.

한데 업데이트가 되지 않고 렉이 걸렸다.

락 걸린 테이블에 update문을 실행한 것처럼 커밋이 되지 않았다.

 

한데

select * from your_table;

로 조회 후 column2값을 수정하면 커밋이 된다.

 

이에 대한 몇 가지 이유와 해결 방법이 있다고 한다.

  1. 테이블 전체 조회가 아닌 경우:
    • SELECT 문으로 일부 컬럼만 조회했을 경우, DataGrip은 해당 결과를 편집 가능한 테이블로 인식하지 않을 수 있다.
  2. 기본 키(Primary Key) 부재:
    • 조회 결과에 기본 키 컬럼이 포함되지 않으면 DataGrip이 각 행을 고유하게 식별할 수 없어 수정이 불가능할 수 있다.
  3. 조인(JOIN)이나 복잡한 쿼리 결과:
    • 여러 테이블을 조인하거나 복잡한 쿼리 결과는 직접 수정할 수 없다.

해결 방법:

  1. 모든 컬럼 조회:모든 컬럼을 조회하면 대부분의 경우 수정이 가능해진다.
    SELECT * FROM your_table;

  2. 기본 키 포함:기본 키(예: id)를 포함하여 조회한다.
    SELECT id, column1, column2 FROM your_table;

  3. 테이블 편집기 사용:
    • 데이터베이스 탐색기에서 테이블을 우클릭하고 "Table Editor"를 선택하여 직접 테이블을 편집할 수 있다.
  4. 수동으로 UPDATE 문 작성:직접 UPDATE 문을 작성하여 데이터를 수정할 수 있다.
    UPDATE your_table SET column1 = 'new_value' WHERE id = 1;

  5. DataGrip 설정 확인:
    • File > Settings > Database > Data Editor에서 "Allow editing in read-only mode" 옵션이 체크되어 있는지 확인한다.
  6. 데이터베이스 권한 확인:
    • 해당 테이블에 대한 UPDATE 권한이 있는지 확인한다.

2번 방법으로 해결했다. 

조회할 테이블에서 기본키를 포함하여 조회를 하면 데이터 수정이 된다. 

일부 컬럼한 select하면 어떤 row인지 DataGrip에서 고유행인지 구별하지 못하는 것 같다. 

기본키가 있어야 된다.

다른 DB툴로는 수정이 가능했었는데 DataGrip은 까다로운 것 같다.

 

5번 방법은 찾을 수 없었다. 

 

1번 방법은 원래 가능한 방법 다만 수정하고픈 컬럼만 보기가 불편하다.

반응형