๐คฏ ๋ฌธ์ ์ํฉ
์ด์์์ insert ์ฟผ๋ฆฌ์ timestamp ์ปฌ๋ผ์ NULL ์ ๋ฃ์ง๋ง, not null ํ์ ์ด๋ผ cannot be null ์๋ฌ๊ฐ ๋ฐ์ํ๋ค.
์ธ๋ป๋ณด๋ฉด ๋น์ฐํ ๊ฒฐ๊ณผ์ธ ๊ฒ ๊ฐ์ง๋ง, ์ธํ๋ผ ์ด๊ด ์์ ์์ ๋ฐ์ํ ์ด์๋ผ๋ ์ ์์ ๋ดค์๋ ์ ๋์ํ๋ ์ฝ๋๊ฐ ํ๊ฒฝ์ด ๋ณํด์ ์๋ฌ๊ฐ ๋ฐ์ํ๋ ์ํฉ์ธ ๊ฒ์ด๋ค.
๋ฐ๋ผ์ ํ๊ฒฝ์ ๋ฐ๋ฅธ ๋ฌธ์ ์ธ ๊ฒ์ผ๋ก ๋ณด์ฌ์, ์ด๋ฅผ ํํธ๋ก ์ก๊ณ ๋ฌธ์ ๋ฅผ ์ฐพ์ ๋๊ฐ๋ค.
๐จโ๏ธ ์์ธ ๋ถ์
- ์ธํ๋ผ ์ด๊ด ์ ํ๊ฒฝ์์ ์๋ฌ flow๋ฅผ ๋ฐ๋ผ ๋์ผํ๊ฒ ์คํ (MySQL 5.7)
→ ์ ์ ๋์ - ์ธํ๋ผ ์ด๊ด ํ ํ๊ฒฝ์์ ๋์ผํ๊ฒ ์คํ (MySQL 5.7)
→ ์๋ฌ ๋ฐ์
INSERT INTO BSI_BENEFIT_BASES ( ... , CREATION_DATE , LAST_UPDATE_DATE ) VALUES ( ... , CURRENT_TIMESTAMP() , null ) - Local MySQL์์ insert ์ฟผ๋ฆฌ ๋์ผํ๊ฒ ์คํ (MySQL 8.0)
→ ๋์ผํ๊ธฐ cannot be null ์๋ฌ ๋ฐ์
์ ๋จ๊ณ๋ง์ผ๋ก๋ ์์ธ์ ์๊ธฐ ์ด๋ ค์ DBA ๋ถ๊ป ๋ฌธ์ ๋ฃ์๋ค.
################ DBA์์ ๋ํ ๋ฃ๊ธฐ
DBA ๋ต๋ณ
๋ DB ์์์ explicit_defaults_for_timestamp ๋ณ์ ๊ฐ์ด ๋ค๋ฅด๋ค์. ์ค๋ฅ๊ฐ ์๋๋ ๊ณณ์ ๊ฐ์ด OFF์ด๊ณ , ์ค๋ฅ๊ฐ ๋๋ ๊ณณ์ ON์ ๋๋ค. mysql ์๋ฒ ๋ฒ์ ์ด 5.7.12 → 5.7.40์ผ๋ก ๋ณ๊ฒฝํ๋ฉฐ ๋ณ์ ๊ธฐ๋ณธ๊ฐ์ด ๋ค๋ฅธ ๊ฒ ๊ฐ์ต๋๋ค.
https://minsql.com/mysql/MySQL-explicit_defaults_for_timestamp/

๋ผ๊ณ ํ์๋ฉฐ ์น์ ํ ์ค๋ช ๋ธ๋ก๊ทธ์ ์ฌ์ง๊น์ง ๋ณด๋ด์ฃผ์ จ๋ค.
์ ๋ฆฌํ์๋ฉด, ์ด์ ํ๊ฒฝ(MySQL 5.7.12)์์๋ OFF๊ฐ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์ค์ ๋์ด ์์ด์ NULL์ insert ํ๋ฉด current timestamp๊ฐ ์ ๋ ฅ๋๋ค.
์ด๊ด๋ ํ ํ๊ฒฝ(MySQL 5.7.40)์์๋ ๊ธฐ๋ณธ๊ฐ์ด ON์ผ๋ก ์ค์ ๋์ด NULL์ ๋๊ฐ์ด ์ ๋ ฅํ๋๋ผ๋ ์๋ฌ๊ฐ ๋ฐ์ํ๋ ๊ฒ์ด๋ค.
์ฌ๊ธฐ์ ํ๊ฐ์ง ์๋ฌธ์ด ์๊ธด๋ค.
์ Local MySQL(8.0)์์๋ ์๋์๊น?
์ฐพ์๋ณด๋, 5.7.40 ๋ฒ์ ๊ณผ ๋์ผํ๊ฒ 8.0์์๋ ๊ธฐ๋ณธ๊ฐ์ด ON์ผ๋ก ์ค์ ๋์ด ์๋ค. [๊ณต์ ๋ฌธ์]
MySQL 8.0 ๋ฌธ์์์๋ 8.0๋ถํฐ ํด๋น ๋ณ์์ default๊ฐ์ด ๋ณ๊ฒฝ ๋์๋ค๊ณ ๋์์๋ค. ์๋ง ์ธํ๋ฆฌ ์ด๊ดํ๋ฉด์ ํด๋น ๋ณ์ ์ค์ ์ด ๋๋ฝ๋์ง ์์๋ ์์ํ๋ค.
๐ ํด๊ฒฐ๋ฐฉ๋ฒ
ํด๊ฒฐ๋ฐฉ๋ฒ์ ๋งค์ฐ ๊ฐ๋จํ๋ค. explicit_defaults_for_timestamp ๋ณ์ ๊ฐ์ OFF๋ก ์ค์ ํด ์ฃผ๊ฑฐ๋, mysql ์ค์ ์ ์์กดํ์ง ์๊ณ CURRENT_TIMESTAMP() ๋ฅผ ๋ฃ์ด์ฃผ๋๋ก ์ฟผ๋ฆฌ๋ฅผ ์์ ํ๋ฉด ๋๋ค.
๋๋ DB ๋ฒ์ ์ ๋ฐ๋ฅธ ๊ธฐ๋ณธ๊ฐ ์ค์ ์ ๋ฐ๋ผ๊ฐ๋ ์ฟผ๋ฆฌ๋ ์ข์ง ์๋ค๊ณ ๋๊ผ๋ค. ์๊ฐ์ด ์ง๋๋ฉด DB ๋ฒ์ ์ ์ฌ๋ฆฌ๊ฒ ๋ ๊ฒ์ด๊ณ , ๋ฒ์ ์ ๊ทธ๋ ์ด๋์ ๋ฐ๋ฅธ ๋ฆฌ์คํฌ๋ฅผ ์๊ณ ๊ฐ๊ณ ์ถ์ง๋ ์์๋ค. ๋ฐ๋ผ์ ์ฟผ๋ฆฌ์ default ๊ฐ์ ์ง์ ๋ช ์ํด์ฃผ๋ ๋ฐฉ๋ฒ์ ์ ํํ์๋ค.
'MySQL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| MySQL์ collation์ด๋ผ๋ ๋ง๋ฒ (1) | 2023.06.06 |
|---|