본문 바로가기
개발자의 공부방/에디터

[IntelliJ] 인텔리제이 Data Grip 중 SQL 쿼리문 동작이 안될 때 (insert 적용이 안되는 경우 등..)

by 쌈빡한 쥬니준 2019. 8. 20.

인텔리제이를 만든 회사 JetBrains 에서 DataGrip 이라는게 있습니다!

하지만 인텔리제이 내에서도 DataGrip 의 기능을 사용할 수 있게 되어 있는데요.

 

어느 날 SQL 쿼리문인 insert를 작성해서 commit 을 시키면 인텔리제이 내에서는 데이터가 들어간게 보이지만...

막상 다른 데이터툴로 조회를 하면 인텔리제이에서 날린 쿼리가 적용되지 않았습니다.

 

이 부분에 대해서 한번 설명해보겠습니다!

 

 

 

1) 문제

 

--이렇게 오라클과 연결이 되어 있는 상황. --

위의 사진처럼 데이터베이스 오라클을 연동시켜놨습니다.

 

-- 콘솔창에 쿼리문 --

그리고 데이터베이스 콘솔창에 쿼리문을 작성 후 Ctrl + Enter 를 누르게 되면 데이터가 들어가게 됩니다.

 

-- 데이터가 잘 들어갔습니다?? --

인텔리제이에서 select * from tbl_board 쿼리를 입력하여 결과를 보면 이렇게 데이터가 들어간 게 보입니다.

 

하지만...

-- DBeaver 라는 데이터툴로 조회하면...?! --

다른 툴에서는 조회가 되지 않습니다 -_-?!

 

이 문제를 어떻게 해결하느냐!!

 

 

2) 해결방법

 

인텔리제이 콘솔창을 봅니다.

위의 사진에 보시면 Tx:Manual 과 함께 옆에 종이비행기? 화살표 모양이 있습니다.

적용이 되지 않는 경우는 쿼리를 날리고 Commit을 하지 않아서 적용이 되지 않은 것이 였습니다!

 

즉, 쿼리를 날리고 옆에 종이비행기? 화살표 모양을 누르면 DBeaver 데이터툴에서도 조회가 잘 됩니다!

 

하지만...계속 버튼을 누르면 귀찮겠죠???

 

-- Tx 모드가 Manual 인 경우 --
-- Tx 모드가 Auto 인 경우 --

방금 스샷에 초록색으로 표기한 부분을 Tx:Manual 을 보면 Transaction Mode 중 Auto, Manual 라는게 보입니다.

 

모드를 Auto 로 하면 이제 자동으로 Commit 이 됨과 동시에, 옆에 Commit을 의미하는 화살표아이콘과 롤백 아이콘 등이 비활성화되는 것을 보실 수 있습니다.

 

이제 수동으로 화살표를 누를 필요가 없이 쿼리적용이 잘 될겁니다!

 

 

 

 

자, 그럼 다음에 또 인텔리제이에 대한 팁과 함께 즐코딩!~

댓글2

  • Terry 2019.11.25 17:37

    datagrip 관련으로 검색하던 도중 이 글이 발견되어 한마디 적어놓습니다..
    query 툴 관련 사용시 transaction은 수동으로 관리해주는 것이 좋습니다.
    왜냐면 개발하던 도중에는 실수가 있기 마련이죠..
    예를 들어보죠..datagrip을 지금 글쓴분과 같이 설정을 한 상태에서 delete문을 작성한다고 가정해볼께요..
    이때 내가 delete 문을 작성하는데 where문을 안쓰고 작성한뒤 이를 실행해버립니다..
    그러면 테이블에 있는 data가 전부 날아가버리겠죠..그리고 자동 commit을 해버렸기 때문에 단순한 방법으로는 이를 복구할수 없게 됩니다..
    만약 transaction mode를 auto가 아닌 manual로 설정했다면 어땠을까요..?
    그땐 rollback 버튼을 눌르면 원상태로 복구가 됩니다..
    manual로 설정하고 insert, update, delete문을 여러번 실행한뒤 맨 마지막에 commit 버튼을 눌러주면 그 시점까지 실행했던 모든 sql문이 한꺼번에 반영이 되어줍니다..
    그리고 내가 실행했던 query문에 문제가 있을 경우 rollback 버튼을 눌러주면 원상태로 복구가 되죠..
    auto commit은 편할수는 있지만 위험한 설정입니다..그러니 안하시는게 좋아요..
    답글

    • 댓글 써주셔서 감사합니다 ( _ _)
      테리님이 설명해주신대로 자동 커밋은 설정하지 않는게 좋습니다. 이 포스팅을 쓸 당시에는 취준을 하던 중에 인텔리제이툴을 만져보면서 기능을 익히는 중이였기에 올려본거라서...큰 데이터를 사용할 일이 없기 때문에 Auto Commit 을 설정해 놓은 것입니다~ 지금 현업에서는 절대 Auto로 해놓으면 안된다는 것을 알고 있어 이 기능은 사용하지 않고 있네요 ㅎㅎ 좋은 첨언 감사드립니다!