๋์ปค ํ๋ธ์ ์ฌ๋ผ์จ ๊ณต์ MySql ์ปจํ ์ด๋๋ฅผ ์คํํ๋ฉด ์ธ์ ์ด๋์๋ ์์ฃผ ์ฝ๊ฒ ๋์ผํ MySql ํ๊ฒฝ์ ๊ตฌ์ถํ ์ ์์ต๋๋ค. MySql ์ปจํ ์ด๋๋ 8 ๋ฒ์ ์ผ๋ก ์งํํ์ต๋๋ค.
๊ณต์ ๋์ปค ํ๋ธ์ ๋์์๋ ์ค๋ช ๋๋ก ํ๋ฉด 1๋ถ๋ ์๋์ MySql ํ๊ฒฝ์ ๋๊ตฌ๋ ๋ง๋ค ์ ์์ต๋๋ค. ํ์ง๋ง ๋จ์ํ ์๋์ ๊ฐ์ ๋ช ๋ น์ด๋ก ์ปจํ ์ด๋๋ฅผ ๋ง๋ค๋ฉด ์๋๊ณ ๋ณผ๋ฅจ๋ ๋ง์ดํธ ํด์ผํ๊ณ MySql์์์ ์๊ฐ, ์์คํ ํ๊ฒฝ ๋ณ์ ๋ฑ๋ ์ค์ ํด์ฃผ์ด์ผ ํฉ๋๋ค.
$ docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag
๊ทธ ์ค ์ด๋ฒ ๊ธ์์ sql-mode ๋ผ๋ MySql์์ ์ฌ์ฉ๋๋ ์์คํ ๋ณ์์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค.
sql-mode๋?
MySql์ ์ ์ฅ๋ ๋ฐ์ดํฐ์ ๋ํ ์ ํจ์ฑ ๊ฒ์ฌ ๋ฒ์๋ฅผ ์ค์ ํ๋ ์์คํ ๋ณ์์ ๋๋ค.
sql-mode์ ํ์ฑํ ํ๊ณ ์ ํ๋ ๋ชจ๋๋ฅผ , ๊ตฌ๋ถ์๋ก ๊ตฌ๋ถํ์ฌ ํ์ค๋ก ์ถ๊ฐ ํ ์ ์์ต๋๋ค.
๋ํ MySql ๋ฒ์ ๋ณ๋ก default_sql_mode ๊ฐ์ด ๋ค๋ฅด๋ฉฐ, ์ด๋ฅผ ์ปค์คํฐ ๋ง์ด์ง ํ ์ ์์ต๋๋ค.
SELECT @@sql_mode;
์ ์ฟผ๋ฆฌ๋ฌธ์ผ๋ก ํ์ฌ MySql์ ์์คํ ๋ณ์๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
MySql ์ปจํ ์ด๋๋ฅผ ์คํ ํ ํ group by ๋ฅผ ์ฌ์ฉํ๋ ์ฟผ๋ฆฌ๋ฌธ์ ๋ ๋ฆด ์ "SELECT list is not in GROUP BT ..." ์ด๋ฌํ ์๋ฌ๋ฅผ ๋ง์ฃผ ํ ๊ฒ์ ๋๋ค. ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์ sql_mode์์ "ONLY_FULL_GROUP_BY" ์ต์ ์ ์ญ์ ํด์ฃผ์ด์ผ ํฉ๋๋ค.
๊ธฐ์กด์๋ sql_mode๋ฅผ ๋ณ๊ฒฝํ๊ธฐ ์ํด์ /etc/mysql/my.cnf ์ vim ์๋ํฐ๋ก ์คํ ํ ํ ๊ฐ์ ๋ฐ๊พธ๊ณ ์ฌ์์์ ํ์ด์ผ ํ์ต๋๋ค. ํ์ง๋ง MySql ์ปจํ ์ด๋ ์ด๋ฏธ์ง๋ฅผ ์ด์ฉํ๋ฉด ์ด๋ฌํ ๊ณผ์ ์ด ํ์ ์์ต๋๋ค.
$ docker run --name blaunchDB -e TZ=Asia/Seoul \
-v /root/mysql:/var/lib/mysql -d -p 3306:3306 \
mysql:8.0.27 --sql-mode="STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION"
์ด๋ฐ์์ผ๋ก ์ปจํ ์ด๋๋ฅผ run ํ ๋ ๋ณ์๋ก ๋ฃ์ด์ค ์ ์์ต๋๋ค. ๊ท์ฐฎ๊ฒ ์ปจํ ์ด๋์์ bash๋ฅผ ์คํ ํ ํ์๋ ์์ต๋๋ค. IaC ๊ธฐ๋ฐ์ผ๋ก ์ธํด์ ์๋ฒ ๊ตฌ์ถํ๊ธฐ๊ฐ ํจ์ฌ ๋ ํธํด์ง๊ฑฐ ๊ฐ์ต๋๋ค.