λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

λͺ©λ‘μ΄ μ—†μŠ΅λ‹ˆλ‹€.

[MySQL] ERROR 1118 (42000) : Row size too large (> 8126)...

πŸ›’ DB/MySQL
    λ°˜μ‘ν˜•
    ERROR
    ERROR 1118 (42000) at line 3117: Row size too large (> 8126). Changing some columns to TEXT or BLOB or using ROW_FORMAT=DYNAMIC or ROW_FORMAT=COMPRESSED may help. In current row format, BLOB prefix of 768 bytes is stored inline.

     

     

    ν•΄λ‹Ή μ—λŸ¬κ°€ λ°œμƒν•œ 경우 ν•΄λ‹Ή ν…Œμ΄λΈ”μ˜ Row의 Sizeκ°€ λ„ˆλ¬΄ 큰 것을 μ˜λ―Έν•©λ‹ˆλ‹€. μ΄λŠ” μ—‘μ…€λ‘œ 데이터λ₯Ό 집어넣을 λ•ŒλŠ” λ¬Έμ œκ°€ 생기지 μ•ŠλŠ” λ“― λ³΄μ΄λŠ”λ°μš”. λ§Œμ•½ 덀프λ₯Ό λ°€μ–΄λ„£λŠ” μž‘μ—…μ—μ„œ μœ„μ˜ μ—λŸ¬κ°€ λ°œμƒν•œ 경우 μ•„λž˜μ™€ 같이 μž„μ‹œμ μœΌλ‘œ ν•΄κ²°ν•  수 μžˆλŠ” 방법이 μžˆμŠ΅λ‹ˆλ‹€.

     

     

    1. root계정 접속  ν›„ μ„€μ • λ³€κ²½
    set global innodb_file_format = Barracuda;
    
    set global innodb_file_per_table=ON;

     

     

    2. 개발 계정(λ˜λŠ” root계정)으둜 μ ‘μ†ν•˜μ—¬ ν•΄λ‹Ή ν…Œμ΄λΈ” ROW_FORMAT λ³€κ²½
    ALTER TABLE (ν…Œμ΄λΈ”λͺ…) ROW_FORMAT=COMPRESSED;

     

     

    후에 덀프λ₯Ό λ°€μ–΄λ„£λŠ” μΏΌλ¦¬μ—λŠ” ν•΄λ‹Ή ν…Œμ΄λΈ”μ„ μƒˆλ‘œ μƒμ„±ν•˜λŠ” κ²ƒλ§Œ μ§€μš°κ±°λ‚˜ 생성 쿼리에 ROW_FORMAT을 COMPRESSED둜 μ„€μ •ν•΄μ£ΌλŠ” 것을 μΆ”κ°€ν•΄μ£Όλ©΄ λ©λ‹ˆλ‹€.

    λ°˜μ‘ν˜•