오류 발생
AWS Redshift을 Colab을 통해 '%sql'을 통해 연결한 후,
s3의 데이터를 가져와 EXTERNAL TABLE을 만들던 도중 다음과 같은 오류를 만나게 되었다.
다른 쿼리문 (CREATE EXTERNAL SCHEMA) 는 잘 되었는데 이상하게 아래 EXTERNAL TABLE 생성하면 transaction 오류를 뱉었다.
오류명 : (psycopg2.errors.ActiveSqlTransaction) CREATE EXTERNAL TABLE cannot run inside a transaction block
오류 원인 파악해보기
오류를 읽어보면, 위의 쿼리를 트랜젝션 블락 안에서는 실행할 수 없나보다.
그래서 찾아보니까, colab에서 연결할 때 '%sql'로 연결을 했는데,
이 매직키워드를 사용한 연결은 자동적으로 트랜젝션 내에서 쿼리를 실행하는 옵션을 디폴트로 갖고 있다고 한다.
정리를 하면, 트랜젝션이 기본적으로 셋팅된 연결을 가지고,
트랜젝션을 사용하면 안되는 쿼리문을 실행해서 오류가 난것이다.
오류 해결방법은?
해결방법 1
해결 방법을 찾아보니,
redshift 연결하기 위해 라이브러리를 import하고 연결 객체를 만들어서 옵션을 설정하는 것이 있었다.
해결방법 2
위의 해결방법1이 확실한 방법인지는 모르겠어서, 오류를 해결 시간을 줄이기 위해 AWS Redshfit Console(query editor2)로 가서 위의 쿼리문을 그대로 실행해보았다.
결론적으로 해결이 되었다.!
위에서 찾은 해결방법 1로도 가능한지 주말에 좀 더 찾아서 첨부해야겠다.
우선적으로 오류는 해결해서 다행이다!
굳 좝
23.05.27 오전 4시 기준
오류를 다시 해결해보고자, 기존에 AWS console창에서 만들었떤 EXTERNAL TABLE 스키마 아래에 user_session_channel 테이블을 삭제하고, 다시 colab에서 접속해서 똑같이 쿼리문을 실행해 보았다.
오류가 안 뜬다...
그 사이동안 내가 바꾼건 Redshift의 관리자 권한을 준 것 밖에 없는데, 그게 도움이 됐나?
당연히 안 될줄 알고 자기전에 마지막 확인을 해본 것인데 매우 허무하다.
정확한 에러 원인을 알지는 못했지만, 일단은 console 창에서 해결하면 된다는 것을 알았으니
찝찝한 마음 조금 덜어내는 걸로 하자.....
일단 정확한 원인과 해결방법을 찾는 때를 위하여 기록을 남겨두겠다.
'#️⃣ Cloud&Container > AWS' 카테고리의 다른 글
[AWS-SAA] Advanced S3 (0) | 2023.06.16 |
---|---|
[AWS-SAA] Amazon S3 Introduction (0) | 2023.06.13 |
AWS Redshift 톺아보기 (0) | 2023.05.25 |
[AWS] Elastic Beanstalk 구축 실습 (0) | 2023.05.15 |
[AWS S3 오류] Forbidden (Service: Amazon S3; Status Code: 403; Error Code: 403 Forbidden; (0) | 2023.05.11 |