'innodb'에 해당하는 글 1건

Row size too large

Database/Mysql 2015. 10. 29. 10:54

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

 

Mysql 에서 글을 겁나 길게 썼더니 발생한 오류이다.
InnoDB 는 한 레코드 삽입에 있어서 8000 byte 의 크기 제한이 있다. 그 크기를 넘어섰다고 경고를 하는 것이다.
해당 컬럼 타입을 TEXT 나 BLOB 으로 변경하거나 ROW_FORMAT 을 DYNAMIC 이나 COMPRESSED 로 변경하란다.
이미 BLOB 으로 되어 있고 COMPRESSED 로 포맷을 변경하였는데도 동일한 에러가 발생하였다.

 

여러 삽질 끝에 테이블 row_format을 compressed 로 변경하기 위해서는,
my.inf 나 AWS 의 Parameter Groups 에서 innodb_file_format 을 Barracuda 로 설정해야 한다는 것을 알았다.
Barracuda 는 DYNAMIC 과 COMPRESSED 을 지원하는 InnoDB 파일 형식이다.

 

 

먼저 file_format 을 바꾸고,

 

innodb_file_format = Barracuda
( > SET GLOBAL innodb_file_format = barracuda; )

 

row_format 을 바꾼다.

 

ALTER TABLE mytable
    ENGINE=InnoDB
    ROW_FORMAT=COMPRESSED
    KEY_BLOCK_SIZE=8;

 

 

그리고 정상적으로 변경이 되었는지 확인한다.

 

> show variables like "%innodb_file%";
innodb_file_format        Barracuda
innodb_file_format_check  ON       
innodb_file_format_max    Barracuda
innodb_file_per_table     ON       

 

> show table status like 'mytable';
Row_format : Compressed

 

 


WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

트랙백  0 , 댓글  2개가 달렸습니다.
  1. 이 포스트 덕분에 문제를 해결했네요. 감사합니다. ;)
secret