MySQL에서 최대 행 크기 문제


8

MySQL에 문제가 있으며 많은 텍스트 필드가있는 테이블이 있습니다. 일부 데이터를 저장하려고하면이 오류가 발생합니다.

행 크기가 너무 큽니다. BLOB를 계산하지 않고 사용 된 테이블 유형의 최대 행 크기는 8126입니다. 일부 열을 TEXT 또는 BLOB로 변경해야합니다.

각 필드에 저장하는 텍스트는 너무 길지 않고 각 단락에 몇 개의 단락 만 있습니다.

어떡해?

답변:


9

답변 해 주셔서 감사합니다. 게시 한 링크는 학습을 시작하는 데 유용한 자료였습니다.

마지막 으로이 페이지를 찾았습니다 : http://download.oracle.com/docs/cd/E17952_01/refman-5.5-en/innodb-compression-usage.html

그리고 [mysqld]섹션 에이 두 줄을 추가하여 my.cnf를 구성했습니다 .

innodb_file_per_table
innodb_file_format = Barracuda

그런 다음 ALTERphpMyAdmin을 통해이 명령으로 내 테이블을 작성하십시오.

ALTER TABLE nombre_tabla
 ENGINE=InnoDB
 ROW_FORMAT=COMPRESSED 
 KEY_BLOCK_SIZE=8; 
 SHOW WARNINGS;

위의 링크에서 읽을 수있는 다른 설정을 사용할 수도 있지만 이는 나에게 도움이되었습니다.


COMPRESSED와 Barracuda의 단점은 wahts에 대한 많은 정보를 찾지 못했습니다. 그것이 더 좋고 이것을 해결한다면 항상 그것을 사용하지 않는 이유는 무엇입니까?
Ted

3

MySQL 행 크기에 대해 많이 설명하는 이 기사 를 살펴볼 수 있습니다 . TEXT 또는 BLOB 필드를 사용하더라도 각 필드의 첫 번째 768 바이트를 페이지에 인라인으로 저장하므로 행 크기는 여전히 8K (InnoDB 제한)를 초과 할 수 있습니다. 이 문제를 해결하는 가장 간단한 방법은 InnoDB 에서 바라쿠다 파일 형식 을 사용하는 것 입니다. 이것은 기본적으로 전나무 768 바이트를 저장하는 대신 텍스트 데이터에 20 바이트 포인터 만 저장하여 문제를 완전히 제거합니다.


1

mysql이 말하는 것처럼 큰 필드를 varchar에서 text 또는 blob으로 변환하십시오 (ALTER TABLE). 텍스트 필드는 varchar와 비슷하게 작동하지만 (접두사 길이가 필요하지만 작동하지만) 별도로 저장됩니다.

이 참조는 모든 주식 mysql 테이블 엔진의 정확한 한계를 알려줍니다.

http://dev.mysql.com/doc/refman/5.0/en/column-count-limit.html

그리고 텍스트 필드에 대해 알아야 할 모든 것이 있습니다.

http://dev.mysql.com/doc/refman/5.0/en/blob.html


귀하의 답변에 대한 @korkman에게 감사드립니다. 문제가 발생했을 때 내 필드는 이미 텍스트로 정의되었습니다. 나는 당신의 링크 제안을 볼 것입니다.
Memochipan

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.