티스토리 뷰

참고사이트

https://mariadb.com/kb/en/innodb-row-formats-overview/#checking-a-tables-row-format

update 쿼리 실행시 발생

update 테이블 set 컬럼='내용' where

error 내용

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

정리

InnoDB는 하나의 레코드 삽입시 (8000byte) 제한됨
에러 내용은 컬럼 타입을 TEXT, BLOB 으로 변경하거나 ROW_FORMAT 을 DYNAMIC 혹은 COMPRESSED 으로 변경해보라는 메세지

에러 발생한 테이블의 컬럼은 mediumtext, 테이블의 ROW_FORMAT 은 Compact 타입이였음

컬럼 타입 확인

desc 테이블명;

mediumtext

테이블 row_format 확인

show table status like '테이블';

Compact

innodb_file_format = Barracuda 변경해야 함

SET GLOBAL innodb_file_format = barracuda;

DYNAMIC 혹은 COMPRESSED 사용하기 위해서는 이노디비 파일 포맷을 바라쿠다로 변경해야 함

테이블 row_format 바꾸기

COMPRESSED 로 바꾸기

ALTER TABLE 테이블 ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8;

DYNAMIC 로 바꾸기

ALTER TABLE 테이블 ROW_FORMAT=DYNAMIC;

작업하기전에 dump 파일 백업은 기본
COMPRESSED 와 DYNAMIC 중에 머가 더 좋은지는 모르겠으나 난 DYNAMIC 으로 했음

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함