대용량 이진 데이터를 위해 MySQL 5.6 LONGBLOB를 구성하는 방법
제가 질문을 하기 전에 약간의 배경을 묻습니다.MySQL 5.5 데이터베이스의 MySQL Workbench 6.1을 사용하여 한 시스템에서 다른 시스템의 5.6으로 데이터 내보내기/가져오기를 수행하고 있습니다. 두 시스템 모두 Ubuntu 한 32비트 다른 64비트입니다.
문제 없이 데이터를 덤프하지만 로드하려고 하면 다음과 같은 메시지가 표시됩니다.
줄 1807에서 오류 1118(42000): 행 크기가 너무 큽니다(> 8126).일부 열을 TEXT 또는 BLOB로 변경하거나 ROW_FORMAT=Dynamic 또는 ROW_FORMAT=COMPRESSED를 사용하면 도움이 될 수 있습니다.현재 행 형식에서는 768바이트의 BLOB 접두사가 인라인으로 저장됩니다.
다음 표를 작성합니다.
CREATE TABLE `file_content` (
`fileid` bigint(20) NOT NULL,
`content` LONGBLOB NOT NULL,
PRIMARY KEY (`fileid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
다음과 같은 관련 my.cnf 설정이 있습니다.
max_allowed_packet=1G
innodb_file_per_table=1
innodb_file_format=디버깅
저는 무엇이 문제인지 알아내려고 많은 구글 검색 시간을 보냅니다.기본 키를 제거하면 BTW(여기서는 문제가 없지만 이 테이블에 외래 키가 있는 다른 테이블에서 불만이 제기됩니다.
운 좋게도, 저는 상자에 대한 SSH 액세스 권한을 가지고 있어서 실제 mysqldb.log를 볼 수 있습니다.내가 정말 흥미롭다고 생각하는 이유는...
2014-08-12 20:42:12 25246 [ERROR] InnoDB:총 Blob 데이터 길이(14179167)가 redo 로그 파일 크기(3072)의 10%보다 큽니다.nodb_log_file_size를 증가시키십시오.
그래서 redo 로그 파일 크기를 10배 LONGBLOB 크기로 늘려서 문제가 해결되었습니다.그러나 1G LONGBLOB(패킷 크기 때문에 실제 최대치)를 삽입하려면 10G innodb_log_file_size가 필요하다는 것을 의미합니다.
"재실행 로그 크기 오류"가 "행 크기가 너무 큼(>8126)" 오류로 바뀌는 방법을 설명할 수 있는 사람이 있습니까?
BTW 나는 이 DB의 구조를 제어할 수 없기 때문에 "왜 데이터베이스에 큰 방울을 저장하고 있습니까?"는 없습니다.
TIA
이 문제의 원인은 변경 로그에서 확인할 수 있는 MySQL 5.6.20의 변경 때문입니다.
MySQL 5.6에 도입된 redo log BLOB 쓰기 제한의 결과로 innodb_log_file_size 설정은 테이블 행에 있는 최대 BLOB 데이터 크기에 다른 변수 길이 필드(VARCHAR, VARBINAR 및 TEXT TYPE 필드)의 길이를 더한 값보다 10배 더 커야 합니다.innodb_log_file_size 설정이 이미 충분히 크거나 테이블에 BLOB 데이터가 없는 경우에는 작업이 필요하지 않습니다.
이 문제를 해결하려면 다음에서 innodb_log_file_size 옵션의 값을 늘려야 합니다.my.ini
에 [mysqld]
부분.기본값은 다음과 같습니다.48M
:
[mysqld]
innodb_log_file_size=256M
제 경우에는 도움이 되었습니다.
값을 변경할 때 주의하십시오.innodb_log_file_size
이 작업을 안전하게 수행할 수 있습니다.
- 서버를 정상적으로 완전히 종료해야 합니다.
- ib_logfile0, ib_logfile1 등의 이름을 가진 로그 파일을 이동합니다(삭제하지 않음).
- 오류 로그를 확인하여 종료하는 데 문제가 없는지 확인합니다.
- 그런 다음 서버를 재시작하고 오류 로그 출력을 주의 깊게 관찰합니다.로그 파일이 존재하지 않는다는 InnoDB 인쇄 메시지가 나타납니다.새 항목을 만든 다음 시작합니다.
- 이때 InnoDB가 작동하는지 확인한 다음 이전 로그 파일을 삭제할 수 있습니다.
XAMPP에 대한 를 찾을 수 :
할 수 있는 수 .innodb_log_file_size
파일: 실제파일:xampp/mysql/bin/my.ini
xampp\mysql\bin\my.ini 위치를 탐색하고 innodb_log_file_size를 256MB로 변경하십시오.
언급URL : https://stackoverflow.com/questions/25277452/how-to-configure-mysql-5-6-longblob-for-large-binary-data
'bestsource' 카테고리의 다른 글
제출 양식을 작성했지만 제출을 누르면 다음과 같은 응답이 표시됩니다. (0) | 2023.08.27 |
---|---|
"const"는 단지 읽기 전용을 의미합니까 아니면 그 이상의 것을 의미합니까? (0) | 2023.08.27 |
에뮬레이터: 오류: x86 에뮬레이션에는 현재 하드웨어 가속이 필요합니다. (0) | 2023.08.27 |
문자열에 유니코드 문자가 포함되어 있는지 확인하는 방법은 무엇입니까? (0) | 2023.08.27 |
jquery 3.0 url.indexOf 오류 (0) | 2023.08.27 |