"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”} 
    넣어서 저장해준다.(둘 중에 되는거로)

+ Recent posts