๐Ÿคฏ ๋ฌธ์ œ ์ƒํ™ฉ

์šด์˜์—์„œ insert ์ฟผ๋ฆฌ์— timestamp ์ปฌ๋Ÿผ์— NULL ์„ ๋„ฃ์ง€๋งŒ, not null ํƒ€์ž…์ด๋ผ cannot be null ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค.

์–ธ๋œป๋ณด๋ฉด ๋‹น์—ฐํ•œ ๊ฒฐ๊ณผ์ธ ๊ฒƒ ๊ฐ™์ง€๋งŒ, ์ธํ”„๋ผ ์ด๊ด€ ์ž‘์—…์—์„œ ๋ฐœ์ƒํ•œ ์ด์Šˆ๋ผ๋Š” ์ ์—์„œ ๋ดค์„๋•Œ ์ž˜ ๋™์ž‘ํ•˜๋Š” ์ฝ”๋“œ๊ฐ€ ํ™˜๊ฒฝ์ด ๋ณ€ํ•ด์„œ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ์ƒํ™ฉ์ธ ๊ฒƒ์ด๋‹ค.

๋”ฐ๋ผ์„œ ํ™˜๊ฒฝ์— ๋”ฐ๋ฅธ ๋ฌธ์ œ์ธ ๊ฒƒ์œผ๋กœ ๋ณด์—ฌ์„œ, ์ด๋ฅผ ํžŒํŠธ๋กœ ์žก๊ณ  ๋ฌธ์ œ๋ฅผ ์ฐพ์•„ ๋‚˜๊ฐ”๋‹ค.

 

๐Ÿ‘จ‍โš•๏ธ ์›์ธ ๋ถ„์„

  1. ์ธํ”„๋ผ ์ด๊ด€ ์ „ ํ™˜๊ฒฝ์—์„œ ์—๋Ÿฌ flow๋ฅผ ๋”ฐ๋ผ ๋™์ผํ•˜๊ฒŒ ์‹คํ–‰ (MySQL 5.7)
    → ์ •์ƒ ๋™์ž‘
  2. ์ธํ”„๋ผ ์ด๊ด€ ํ›„ ํ™˜๊ฒฝ์—์„œ ๋™์ผํ•˜๊ฒŒ ์‹คํ–‰ (MySQL 5.7)
    → ์—๋Ÿฌ ๋ฐœ์ƒ
    INSERT INTO BSI_BENEFIT_BASES
    (
    	...
        , CREATION_DATE
        , LAST_UPDATE_DATE
    )
    VALUES
    (
    	...
        , CURRENT_TIMESTAMP()
        , null
    )
  3. 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

+ Recent posts