"name '_mysql' is not defined"
- 원인 : 에어플로우(Airflow)에서 "name '_mysql' is not defined" 오류는 MySQLDB 모듈의 _mysql 부분이 로드되지 않아 발생하는 문제입니다. 이 오류는 주로 MySQLDB 패키지의 라이브러리 로딩이나 환경 변수 설정의 문제로 인해 발생할 수 있습니다.
- 해결방법 : 오류를 해결하기 위해 LD_PRELOAD 환경 변수를 사용하여 특정 C++ 표준 라이브러리를 명시적으로 로드하는 것으로 해당 모듈을 찾을 수 있게 합니다.
- 방법1
1) libstdc++.so.6 위치를 찾는다.
(airflow)find / -name libstdc++.so.6
/usr/lib/x86_64-linux-gnu/libstdc++.so.6
2) LD_PRELOAD 환경변수에 해당 라이브러리를 추가하여, 프로그램을 실행할 때, 라이브러리를 먼저 로드하게함
(airflow)export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libstdc++.so.6 - 방법2
airflow web ui에서 connection 설정 Extra에
{“conn_type”: “mysql”, “client”: “mysql-connector-python”}
or {“conn_type”: “mysql”, “client”: “pymysql”}
넣어서 저장해준다.(둘 중에 되는거로)
'airflow(에어플로우)' 카테고리의 다른 글
airflow variable을 yaml 파일 안에 숨기기 (0) | 2024.01.04 |
---|---|
airflow 실행 환경 관리 (0) | 2024.01.04 |
airflow에서 backfill 실행 (0) | 2024.01.03 |
[airflow 실습] mysql 테이블 redshift로 복사하기 (0) | 2024.01.03 |
No module named MySQLdb 에러 (0) | 2024.01.03 |