๐ฅ
[airflow] mariadb๋ฅผ external database๋ก ์ฌ์ฉ ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ จ ์ค๋ฅ (column doesn't exist) ๋ณธ๋ฌธ
[airflow] mariadb๋ฅผ external database๋ก ์ฌ์ฉ ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ จ ์ค๋ฅ (column doesn't exist)
•8• 2023. 8. 14. 15:05์ ํํ ์ด๋ค ์ค๋ฅ ๋ฌธ๊ตฌ์๋์ง๋ db ์ต์ ๊ฐ์ ์ด๋ฏธ ์์ ํด๋ฒ๋ ค์ ์ฌํ์ ์ด๋ ต์ง๋ง
airflow ์ค์ผ์ฅด๋ฌ์์ db๋ฅผ ์ฟผ๋ฆฌํ ๋ syntax error๊ฐ ๋๋ค๋ ์ค๋ฅ์๋ค. (๋์ถฉ ์๋ ์ค๋ฅ ๋๋..)
db init์ ํ๋๋ฐ select ์ ์ ์๋ ์ปฌ๋ผ๋ค์ด group by ์ ์ ์๋ ์ค๋ฅ
"table.column" doesn't exist.
airflow์์๋ ๊ณต์์ ์ผ๋ก mariadb๋ฅผ ์ง์ํ์ง ์๋๋ค.
(์ฐธ๊ณ : https://airflow.apache.org/docs/apache-airflow/stable/howto/set-up-database.html)
Despite big similarities between MariaDB and MySQL, we DO NOT support MariaDB as a backend for Airflow.
mysql๊ณผ mariadb์ group by ์ฌ์ฉ๋ฒ์ ํ์ธํด๋ณด๋ ์ค์ ๋ก ์๋์ ๊ฐ์ ์ฐจ์ด์ ์ด ์์๋ค.
[mysql]
select A, B, C
from some_table
group by A
-> ๊ฐ๋ฅ
[mariadb]
select A, B, C
from some_table
group by A
-> ๋ถ๊ฐ๋ฅ. select ์ ์ ์๋ ๋ชจ๋ ์ปฌ๋ผ์ด group by ์ ์ ์์ด์ผ ํจ
์ด์จ๋ mariadb์ ์ฐ๊ฒฐํด์ผํ๋ ์ํฉ์ด์๊ณ ๋ด๊ฐ ์ฌ์ฉํ ๋ฐฉ๋ฒ์ ์๋์ ๊ฐ๋ค.
(์ฐธ๊ณ : https://mariadb.com/kb/en/sql-mode/#only_full_group_by)
SELECT @@SQL_MODE, @@GLOBAL.SQL_MODE;
์ ๋ณ์๋ค์ ํ์ธ ์์ ์๋์ ๊ฐ์ ์ต์ ์ ํ์ธํ ์ ์๋ค.
์ด์ค์ ONLY_FULL_GROUP_BY ์ญ์ ํ ๋ฆฌ์คํธ๋ฅผ ์ ์ฉ์์ผ ์ฃผ๋ฉด ๋๋ค.
PIPES_AS_CONCAT,STRICT_TRANS_TABLES,ONLY_FULL_GROUP_BY,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
`@@SQL_MODE`๋ ํ์ฌ ์ธ์
์๋ง ์ ์ฉ๋๋ ์ต์
๋ค์ด์ด์ ์ธ์
์ ๋๊ฐ๋ฉด ์ด๊ธฐํ๋๋ค.
`GLOBAL.SQL_MODE`๋ก ์ ์ฉ์์ผ์ฃผ์ด์ผ ํ๋ค.
ํน์ ๋ชจ๋ฅด๋ `SQL_MODE` ์์ ๋จผ์ ์ ์ฉ ํ ๋ฌธ์ ๊ฐ ๋์๋ ์ฟผ๋ฆฌ๊ฐ ์ ์ ๋์ํ๋์ง ํ์ธํด๋ณด๊ณ `GLOBAL.SQL_MODE` ๋ฅผ ๋ณ๊ฒฝํ๋ ๊ฒ์ ์ถ์ฒํ๋ค.