반응형
airflow 에서 제공하는 플러그인 중 쓰고있는 MySqlToGoogleCloudStorageOperator 는 기본 캐릭터 셋을 utf-8로 인식한다. 그런데 DB에서 설정하는 스키마가 utf8이 아닐경우 로드 하다보면 다음과 같은 에러를 발생시킨다.
ERROR - 'utf-8' codec can't decode byte 0xb5 in position 0: invalid start byte
Traceback (most recent call last):
File "/usr/local/lib/python3.7/site-packages/airflow/models/taskinstance.py", line 983, in _run_raw_task
result = task_copy.execute(context=context)
File "/Users/dgpark/airflow/dags/mysql_to_gcs/modules/MysqlToGCS.py", line 106, in execute
cursor = self._query_mysql()
File "/Users/dgpark/airflow/dags/mysql_to_gcs/modules/MysqlToGCS.py", line 131, in _query_mysql
cursor.execute(self.sql)
File "/usr/local/lib/python3.7/site-packages/MySQLdb/cursors.py", line 209, in execute
res = self._query(query)
File "/usr/local/lib/python3.7/site-packages/MySQLdb/cursors.py", line 317, in _query
self._post_get_result()
File "/usr/local/lib/python3.7/site-packages/MySQLdb/cursors.py", line 352, in _post_get_result
self._rows = self._fetch_row(0)
File "/usr/local/lib/python3.7/site-packages/MySQLdb/cursors.py", line 325, in _fetch_row
return self._result.fetch_row(size, self._fetch_type)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb5 in position 0: invalid start byte
캐릭터셋이 다르다보니 해석할 수 없는 언어가 나오고 에러가 난 것인데, 일단 데이터베이스 스키마가 어떤 charset을 사용하는지 먼저 살펴볼 필요가 있다.
SELECT
default_character_set_name, DEFAULT_COLLATION_NAME
FROM
information_schema.SCHEMATA
WHERE
schema_name = '[스키마명]';
실제로 내경우 euc-kr로 되어있었다.
그렇다면 어떻게 해야할까? 바로 접속정보에서 설정해주면 된다.
이전에 환경설정으로 접속정보를 저장한다고 말한 바 있다.
관련글:
환경변수를 설정할때 캐릭터 셋을 다음과 같이 설정하면 불러올때 온전히 가져올 수 있다.
export AIRFLOW_CONN_MYSQL_TEST='mysql://[username]:[password]@[hostname]:[port]/[schema]?charset=euckr'
끝에 charset=euckr 로 설정.
끝.
반응형
'공부 > 프로그래밍' 카테고리의 다른 글
[springboot] jpa 2개이상 DB사용(querydsl 설정 포함) (1) | 2020.09.17 |
---|---|
[airflow] GCS(Google Cloud Storage) 파일을 BigQuery에 저장하기 (0) | 2020.09.09 |
[python3] 기존에 되던것이 No module named 뜰 때 (0) | 2020.09.03 |
[springboot, bigquery] 데이터 조회 (0) | 2020.09.02 |
[airflow] mac에서 DAG실행 시 오류날 때 (0) | 2020.09.01 |
댓글